Start writing an encapsulated event class.
Create a new file "event.py" with an event class, to encapsulate all of the event stuff.
Make create_event check the existing events belonging to that unit and timestep to ensure that they are not trivially redundant. For example, if two position updates are added during a timestep, the original will now be discarded, and replaced by the new event.
Make event merging more intelligent.
Encapsulate event dictionaries.

Refactor the event merging system to be more easily modified, and add the functionality of merging velocity changes with position updates.
Change the event constructors to merge the new event into the history immediately, without returning anything. The previous behavior was for the event constructors to return dictionaries that then had to be passed into create_event by the caller.
Consolidate event types, fix bugs, cache json.

actor_position_update and actor_velocity_change events are both now actor_trajectory_update events. In place of Trajectory updates will directly replace velocity changes, and position updates will now be trajectory updates, but with the 'vx' and 'vy' fields identical to their values in the previous trajectory update.
Merge branch 'feature-newworld' into issue27/optimize-event-list
Switch callbacks to take the player's id at call-time, instead of at creation time
Add a new file 'actor.py' containing the class Actor, which will be the parent class of units, bullets, grenades, etc.
Add client-side wall rendering, ugly though it is
Add some real color for the walls, though it's still ugly.
Majorly refactor world, event and unit to comply with the new event framework.

Events are now handled internally within the event module. The Event class was
split into the classes History and PlayerHistory. Every World instance now
contains a single instance of History, and the History instance contains a
PlayerHistory instance for each player in the game, in addition to a master
event history. All event dictionaries are fully encapsulated within this module.
The world module was split into world, unit and wall modules, each containing
their respective classes. The actor module was introduced, and contains tne
Actor class, such that Unit extends actor. The add_unit method in World no longer
takes a Unit as an argument, but takes arguments similar to those of a Unit
constructor, and internally constructs a unit and adds it to world.units.
Event-throwing functions now take their referants as arguments, and extract the
necessary data on their own.
Draw shadows in a way that makes logical sense
Merge remote-tracking branch 'origin/issue27/optimize-event-list' into feature-newworld

Conflicts:
	world.py
Change the way that walls are added with the world to comply with the framework implicit in the new mechanism for adding units.
Merge remote-tracking branch 'origin/issue27/optimize-event-list' into feature-newworld
Switch world to use lists for walls and units.
Merge branch 'develop' into feature-newworld