[WIP] JSON Deserializer

Targets #151

This is highly WIP. Please review the interface definitions before I
start implementing this stuff!
In the section below you describe how you fall back to the original "Command Arguments" state when you parse a number. How come you have an intermediate state here?