Use transparent unions for heim_object_t

NOT FINISHED.

This illustrates the power of transparent unions, but it also means
we'll have to wrap calls to things that return heim_object_t with a
macro that expands to add .string (and so on) or a cast.  This is ugly.
Maybe we should abandon this approach.