Refactored declarators in the grammar.

Problems with different parenthesis wrapped expressions inside declarators.
Part of the parse tree seems to be silently deleted so that there is nothing
after proto2 in the testdata, but no error cases.

This checkin fixes up some cases and is a marker before I rip out the model
classes from the demo and resplit Decl and Func into Type, Decl and Def.
Splitting Decl.

The original Decl class is now split into a Type and a Decl to smooth
over the tricky corner cases for things like parameters and prototypes.
The new models directory is going to be the IR for the project.

This version compiles and runs, the output is lacking identifiers and
array bounds.