EventQueue

Introduces the Arpk::EventQueue runtime, which is responsible for
holding a FIFO queue of pending events and dispatching them to either a
target entity (by ID) or to all entities which have registered a
Listener component that shares the event's mask.

Events are composed of 3 core values:
- Mask:  the "event mask" which determines its type and what Listeners
should process or respond to it.
- Target:  an optional entity ID which ensures that only the "event
target" receives the event.
- Arguments:  an array of parameters to be sent to the Listener's action
proc.

Events also retain an ID (for tracking) and a timestamp in milliseconds,
the later of which may be used to compute the delta between event
creation and reception by the Listener should an operation be
time-sensitive.