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.
What's the reason for changing this from a `pop` to a `get`. It seems like there should be no harm in using get and leaving it in the kwargs. But I'm not sure if there was any behavior that relied on it having been removed?