MAINT: Adds a tests/utils/ directory and renames test_utils.py
 to utils/test_factory.py
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.
ENH: Adds the schedule_function api that provides EventRule factory
functions.
TST: Adds test cases for the EventRule objects.

Fixes issues discovered while writing tests.
ENH: Work towards python 2/3 compatibility.

Adds a test for the schedule_function api method.
TST: Updates the tests for more coverage.

Speeds up the NthTradingDayOfMonth and NDaysBeforeLastTradingDayOfMonth
by caching the fully computed day.
MAINT: Prunes the rule set.
ENH: Pops 'handle_data' out of kwargs before passing it to initialize.
MAINT: Fix filename