nullable types

since Go does not support null types* we have to implement primitives in Go structs....

this PR adds support in the code generation for ints/floats/strings/booleans and allows them to be NULL.

---

* there are null pointers but the it was a lot nastier to catch the exceptions when accessing them and Dan and I agreed this would be easier.