Inception: ast ain't good enough

* Instead of parsing the AST using `go/ast` to extract information on the structures, we generate a tmp file containing a new go program.  This "inception" program can then use runtime `reflect` instead of the AST to make better static JSON marshaling code. 

![image](https://f.cloud.github.com/assets/110123/2518903/1dd971ac-b46a-11e3-89c2-90ec4de27780.png)