Use map to lookup GValue to Go variable marshalers.

This change removes the switch in Value.GoValue, replacing it with a
map lookup of the value's fundamental type to find and execute a
marshaling function to perform the marshal.  No changes have been made
to the marshaling itself, and should behave identically to the
previous implementation.

This is a step towards completing #44.  When registering a type,
marshaler and unmarshaler funcs should be provided as well.  By moving
the mashaler lookup to a package-global map, externally-registered
marshalers may be run when looked up with a matching GType.