move shared references into Shared class
aggregate queues as top-level DispatchQueue
static factories for Bus

This allows us to hide the implementation class so that we can later
take advantage of polymorphism to efficiently present different
interfaces with the same instance.
Merge pull request #96 from square/loganj/cleanup

clean up some messy internals + add static factories