nullable types

since Go does not support null types* we have to implement primitives in Go structs....
(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.)

this PR adds support in the code generation for ints/floats/strings/booleans and allows them to be NULL.

----

NOTES: to support nulls in formatted print statements we must replace all format patterns with "%s" because we are utilizing the `Stringer` interface on our "primitives" to let Go's `fmt.Printf` function properly output the types.