Add a broker

This is for @nchapman. This is the first Broker. See what you think!
Probably not for this PR, but I'm starting to be confused by a mixture of startup paradigms. In some places our objects use `init`, in others `initialize`. When an object follows the Backbone conventions, it uses `initialize` and configuration is passed to the constructor instead of in a separate call to init.

`init` is my fault. We should probably standardize on `initialize` to make our lives easier.