Making most objects opaque

The structures of most objects are now defined in the .c files,
rather than the .h files.  This is for better information hiding.