Add support for creating transient units in user sessions

This is a bit larger than it should have been, but I got a little carried away with what I considered cleanup.  (I know in the eye of the beholder).  At any rate the goal here was to be able to create a transient unit as a user.  To do this I made the following changes:

1. Refactored all qDBusRegisterMetaType calls into a single static
instance.
2. Added the notion of a System session and a User session instance
3. Exposed the DBus method to create transient units via the API.

I am not happy with how the System, or User session is selected, but I am not sure how best to do it without adding tons of duplication.  Any suggestions on improvements are more than welcome.  My goal is to use this inside of a systemd based launcher in the user session, so I may be moving in a direction away from this libraries intent.