Uses dictionary update instead of iterating through keys.

update_universe is a bottleneck on large data sets.

A large portion of that bottleneck is the call to getitem while
looping over the keys, so using update while passing along the internal
__dict__

Seeing about a 40% improvement.
Changes date_sort to use heapq module.

Uses heapq.merge to sort input from mulitple sources instead of
our own sort module.

From profiling heapq.merge is more efficient than our own efforts.
Removes sort module.

Sort module is now unneeded with use of heapq.merge

Also adapts test_perf_tracking so that it uses date_sorted_sources.
Removes done message.

Instead of checking for 'DONE' on each call uses generators
builtin StopIteration for signalling the end of input.
ENH: batch_transform now supports sid-filtering. DOC: Added docs to batch_transform.
ENH: batch_transform now supports field filtering.
ENH: sid and field filter kwargs can also be strings or ints.
ENH: Added new kwarg to batch_transform: create_panel.
ENH: New batch_transform feature: compute_only_full.
MIN: Changed isinstance check to allow more types.
Adds _ prefix to decorate_source to imply internal usage.
Merge pull request #53 from quantopian/performance-improvements-sorting-and-done-message

Performance improvements sorting and done message
DOC: Typo.
Merge pull request #54 from quantopian/enhance_batch_full_panel

Enhance batch full panel
Uses a Portfolio object instead of an ndict.

Gains some performance by using a 'regular' object instead of
an ndict.

Also, directly sets up the values that we return, instead of going in
between with __core_dict and then removing values.

In it's entirety performanc.as_portfolio is the current
highest bottleneck, working on reducing time spent in that function.
Recycles the portfolio container to be passed to handle_data.

The creation of a new portfolio ndict on each call of handle_data
was creating a very high performance overhead.

Instead, we use the same the portfolio object for each event,
and replace the values contained within.
Recycles objects for positions.

Instead of creating a new ndict for each position on every event,
we change the values in the object that held the previous position.

The creation of new objects on each event was incurring too much
overhead.

Changes the position type returned by performance module.

For improved speed, changes from ndict to a simple Python object,
since the cost of setting ndict values is too expensive for the
number of times that positions are returned.

Also, changes the containing type of the positions to be dictionary
with the __missing__ overloaded, instead of the ndict that had that
behavior, to reduce the penalty of using ndicts.
Merge pull request #58 from quantopian/placeholder-object-in-performance-inner-loop

Recycles objects for portfolio and positions.
Upgrade requests module to 1.1.0
Rolls over existing PerformancePeriod.

Instead of doing the rollover by creating a new PerformancePeriod,
introduces a `rollover` method that resets the values that need
to be fresh in a new period, and moves the ending values to starting
values, and leaves positions intact.

This isn't a major runtime improvement in of itself, but it does
allow us to more easily keep track of position values from period
to period, which other improvements will use.