maybe we need something global in the client but not in sbt itself; or in the client maybe it goes with sbt connector as you say instead of being global. I'm thinking the mutable global could have wonky interactions with the registeredFormats setting... hopefully not.

What are the practical mechanics of sharing a data type between an sbt plugin and a client? Say I want Activator to know about an event that my plugin generates... would I publish a little jar that has my event type and my serializer, and then both depend on it? Would it be terrible if Activator has to do something like:
```
val connector = SbtConnector()
connector.addFormats(com.example.MyPlugin.formatters)
connector.addFormats(com.example2.OtherPlugin.formatters)
connector.open()
```