ENH: Event Manager rework

The event manager is a way to allow functions to be called when certain datetime conditions are present.
This is to eliminate the need got `get_datetime()` checks in the `handle_data` function.
This piggybacks off the work and usage research of @humdings.

Opening this pr now to get some eyes on it before continuing with tests.
In pandas the term `normalize` with regards to dates usually means 'clip to midnight', e.g. http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DatetimeIndex.normalize.html

Maybe something like `ensure_utc`, but in what case would a non-UTC time be passed?