To me it feels wrong to make the data protocol a special one which has
it's own API. I think the TileMothership should be agnostic to any protocol
and just forward the events. If you add a new protocol, you shouldn't need
to change the API of TileMothership.
A later commit will add a convenience API for the data protocol. This could become a general pattern, that more complex protocols might add their own little helpers without polluting the core.