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.
I'm personally more likely to get confused by the the aliasing, but either way doing a quick search is probably going to get me to the same line.  You could also just do an absolute import of zipline.utils.events and then reference it as such.