ENH: Adds support for timed events.

Adds zipline.utils.events module.

Allows for the creation of Event objects in user algos. Events are rules
that trigger based on some condition of the algo's datetime.

Users can use the new api_method add_event(rule, callback) to attach a
callback with the same signature as handle_data to a given rule.

Rules are subclasses of zipline.utils.events.EventRule. There are
StatefulRules and StatelessRules. These rules can be combined to form
compounded rules.

Now, handle_data is treated as an event with a rule of Always(). This
keeps the logic for the events and handle_data closer.