Implemented event subsystem for Protogame.

Summary: This implements an event subsystem for Protogame using the strongly-typed design laid out in T111.  There are two unit tests that verify the behaviour of the event system and it appears to be working correctly.

Test Plan: Run the unit tests.

Reviewers: Sabre070

Reviewed By: Sabre070

CC: buildbot

Maniphest Tasks: T111

Differential Revision: http://code.redpointsoftware.com.au/D84