ENH: Send transactions and orders as standalone events.

- Add transaction and order types
- Move TransactionSimulator from trading.py to tradesimulation.py
  (only used by other members of the tradesimulation module)
- Make Transaction an independent event, like dividend
- Add Blotter class.
- Flatten the transaction events to be independent of trade bar events
- Make orders into events that reach performance (need to add
handling)
- Issue IDs to orders and tracking each transaction's order id.
- Make volume share slippage fill orders independently, rather than
  aggregating them into a single transaction.
- Perf tracker holds orders, serializes them with transactions.
- Order state defined and maintained by order class.
- Minutely emission of orders based on last_modified date.
TST: Removes unused members in set up from TestPerformanceTracker.
BUG: Zero out the microsecond attribute of datetimes

wherever we zero out the second attribute.  Otherwise, we can be
off by some microseconds from midnight, etc.
MAINT: Use pd.Series for benchmarks and algorithm returns in risk.

Instead of lists, use pd.Series, so that memory is preallocated.
ENH: Stream benchmark returns as events.

Instead of creating a list of benchmarks in the risk module,
stream benchmarks through the system as events, starting from the
algorithm generator.

Works towards more easily setting arbritrary pricing data as
a a benchmark, as well as working towards live minutely benchmarks.
BUG: Fix environment minute date range start and volume.

The bar timestamps for day start and finish, for NYSE traded stocks,
should be 9:31 AM EST to 4:00 PM EST, for a total of 390 minutes.

Fix starting at 9:30 AM and the creation of 391 bars.
BUG: Perf tracker should emit perf messages only for TRADE events
TST: When comparing dicts, ensure they have the same keys.

dict 'b' might have more keys.
MAINT: Add empty values for risk metric calculated components.

eigen vales, covariance, etc. are not calculated until the first
return is passed through, so initialize this values to None, so that
`repr` and its ilk work on a freshly created `RiskMetricsIterative`
object.
TST: Prevent random integer during unit test from exceeding bounds.
STY: Move import in test to top of file.
TST: Use 9:31 AM EST for first minute of minute performance tests.
BUG: Fix time spent checking equality of floating point numbers.

The use of np.allclose introduced a severe performance penalty,
caused by the creation of two `np.array`s for each check.

Instead create and use a similar check which maintains tolerance
to floating point rounding, but operates only on scalars.
DOC: Fix documentation compilation
BUG: Fix emission of order updates.

The emission of order updates from the blotter were incorrect,
and subsequently, performance.

Previously, only the first action of the order was emitted,
fix so that all status updates are emitted.
TST: Refactor so tests can exercise internal methods in blotter.
ENH: Stream benchmark and treasury data when downloading

Instead of loading entire csv or xml into memory.
BUG: Fix treasury loading.

Make adjustments for using Python built-in ElementTree instead of lxml
based lxml.

lxml was edited out during pulling in of memory friendly loading of
treasury curves, however some of the use of ETree was lxml specific.

Mea culpa.
STY: Add space after comma in order docstring.
STY: Tweak whitespace in comment.