[WIP] JSON Deserializer

Targets #151

This is highly WIP. Please review the interface definitions before I
start implementing this stuff!
I wouldn't. That's what the `doc/custom` directory is for and why doxygen has a `@see` tag.