[WIP] JSON Deserializer

Targets #151

This is highly WIP. Please review the interface definitions before I
start implementing this stuff!
I would put this entire file into the appropriate source directory. This way, you see the documentation directly when browsing sources. You can even view the documentation live on github.