Add TimedOpenStruct
Require 'time'
Modify OpenStruct and TimedOpenStruct cloning methods
Fix typo
Add special GameEnd event at end of log; improve parser behavior

A special GameEnd event will now fire at the end of a parsed log,
regardless of the log's completeness. This specialized event will
contain statistics from the entire log, such as how long a Player has
been connected, how long a Player has played as a particular role, and
so on.

Due to the GameEnd event bookending the game events with MapLoad at the
start, games can be more efficiently distinguished from one another,
and round divisions have been changed to reflect this.

Additionally, the parser timestamp regex has been migrated to a
constant and changed from a DateTime to a Time in preparation for a
move away from Sequel.
Make Player inherit from TimedOpenStruct
Assume player#in_game? and Player#connected based on Events

If a Player has performed a particular action (i.e. a PlayerSay
indicating they have spoken in the game chat) it can be assumed that
they have connected and/or entered the game. To ensure the accuracy of
Player#durations, assume these events have occurred if they have not
been explicitly triggered by a PlayerConnect or PlayerEnterGame,
respectively.
Transition Australium::EventCache from Sequel to Mongo

MongoDB is more suited to Australium's purposes of being an arbitrary
key-value store. This commit introduces the start of that transition
from Sequel to MongoDB, although additional refinement should still be
considered for recreating objects using EventCache#query.
Australium v1.2.0