Refactored types.

Message is now a trait.
Broadcast is now a wrapper around a given message (which includes
a unique id).