MessageHub that can send pointcast messages at other Objects (targeted by the Object's id) .
A central double-buffered system of message draining/caching that allows for:
1. Messages can be batched by Object and processed together
2. FIrst-order Messages generated during this frame *will* be processed during this frame
3. Prevents n-order infinite loops between Objects that could be sending Messages back and forth in an interdependent fashion
4. Provides good cache-localization (because of the centralized message caches which prevent having to touch the receipient Objects until its time for their actual (batch) processing)
5. Obviates the need to run a top-down tree of virtual Update() functions (although this is yet to be removed)