add base interface OttoBus, 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.  I migrated much of the javadoc content from Bus to OttoBus, with some minor editing to account for the difference between interface and implementation.  

Note: some of the junit tests are failing, but as far as I can tell, they are the same ones that were already failing in code-gen as a result of the WIP at the tip.