Add OttoBus base interface, and have Bus implement it.
Creating a base interface allows instances of classes that act like a Bus but aren't a Bus (e.g. ScopedBus) to be passed around as a standard interface. To minimize disruption to existing code, I left the name of the Bus class alone and named the interface OttoBus.
Merge branch 'base-interface'