Clean up Data.Versioned interface
Make RequiredDataTypes a get accessor (not a fn)
Support systems which don't have a filter

In essence, this means that we now support systems that implement
only from BaseSystem and from Triggers.Global{Input,PreInput,PostInput}.
Add Trigger.OnEngineLoaded

This allows for arbitrary code execution when starting a game engine. The
running code is not allowed to modify game state, however, as it is
executed only when a game engine has been initialized (for example, when a
new game has started or when a replay has been loaded or when a save file
has been loaded).
Support mutation of theory data inside tests
Add Trigger.OnEngineLoaded test
Don't require SyncState call after engine load

Also fixes the callback for OnEngineLoaded so that it will see
fully initialized entities
Some cleanup for the DataAccessor API
Better API docs
Support custom converters for IData types

This is a breaking change to the serialization format.