Complete rewrite

@fluffy @keithgrif

Don't merge this pull request just yet, it's not ready, but this is an attempt to approach this differently and examine how this might better fit into our use cases.  I need to flesh out a lot of this.

I'm working on getting the authorization pieces of this, I'm thinking that the terminology and taxonomy that I've developed here should help that a lot.

This depends on #8.