Improve layout definition parsing
The parser is operating in a streaming manner, meaning that the order of items in the file matters more than it deserves. In addition, it uses GTK hash maps, which are untyped and rather brittle. A fix would be to parse the data into some data structure initially. A likely plan:
- parse using Rust's hash maps and vectors
- switch definitions to toml (no simple XML parser in Rust)
- figure out Cargo integration (for serde-toml)
- add a C interface to the resulting data structure
- populate internal C data structures from it