Fix crash in error handling when creating struct with mismatched info type

Error handling code was attempting to get the PyType of a pointer to a
pointer. Use the correct amount of indirection so an exception is raised as
intended rather than a segfault.
Support union creation with PyGIStruct

Add additional case for allowing the creation bare unions wrapped with
PyGIStruct. This is needed because PyGIStruct wraps both GIStruct and
GIUnion types.