MAINT: Return orders alongside transactions from slippage simulate.

So that blotter.process_trade doesn't need to reindex the dictionary of
open orders, yield a tuple of (order, transaction) from simulate.

Also, update corresponding unit tests now that the method returns
a generator instead of a list.
TST: Skip TALib related tests.

The TALib related tests randomly fail, skip for now, as it causes
noise when developing against the latest versions of the codebase.

Should remove skips when TALib is closer to being fully supported.
MAINT: Pass order emitted from slippage up to tradesimulation.

Instead of searching through the open orders to find the ones
that match the current transactions, now that simulate returns
the pair of transaction and order for which that transaction
was created for, that order can be used where we previously
searched for a modified order.

This should be a runtime improvement since, but not yet verified
via thorough profiling.
STY: Use return instead of StopIteration to short circuit blotter gen.

Using `return` is a little more readable alongside the rest of the logic
compared to exposing iterator internals.
ENH: Add check to ensure transactions and orders are aligned.

Raise exceptions when the slippage model returns transactions
that are non-sensical, i.e. those with zero volume, buy transactions
when the order is a sell (and vice-versa), and transactions that are
for a larger amount than the corresponding order.

TODO: After adding a unit test suite that covers just the blotter,
add tests that exercise this logic to that suite.
MAINT: Remove unused NaiveRollingPanel from rolling panel module.
BUG: Do not try to set non-existent items.
ENH: Make RollingPanel update itself if new fields arrive.

Before we preinitialized the BT's fields and sids.
Thus, no new ones could be added after initialization.
This should be fixed now.
ENH: Use smarter matching for updating RollingPanel.
DOC: Add note about performance issue when updating.
Merge changes to RollingPanel that allow new sids to be added mid-run.
BUG: Use context in lieu of "use_environment" decorator

The "use_environment" decorator is too side-effectful (e.g.,
connecting to Yahoo! Finance or another data source) to be used as a
decorator to a function that gets evaluated during module load. This
causes problems, e.g., if Zipline is being used in a gevent
environment, when the trading environment created by the decorator
argument tries to use greenlets when gevent hasn't been fully
initialized.

Since the decorator is nothing more than a context-manager wrapper,
this commit removes the decorator and replaces its use with contexts,
i.e., "with" statements.
BUG: Buy/sell triggers not correct in example. Thanks @FerMartin.
BUG: Fix randomly failing talib unittest that relied on dict order.
STY: Remove unused import from transform tests.
ENH: Remove need to pass sid to TALib transform constructor.

Now that BatchTransforms use RollingPanels under the hood, passing
an sid is no longer needed, passing the data will to handle_data
will suffice.
BUG: Fix TALib example due to parameter changes.

Remove use of `sid` parameter, which was recently removed.
MAINT: Use TALib abstract function names value when creating transforms.

Instead of using reading the __all__ value and filtering out Function,
use the abstract internal variable that lists all functions.
Add a VirtualBox-based Vagrant config file.

This VagrantFile will, on "vagrant up"...

- Create a simple, minimal Precise Pangolin (12.04) Ubuntu 64 bit VM
- Customize the VM with 2 virtual CPU's and 2048MB of RAM
- Configure SSH for passwordless access (from the command-line)
- Add the required packages from the Ubuntu repo to support zipline
- Add (and compile) ta-lib
- Add the required Pip packages

When Vagrant is done, you can start hacking on zipline with:

vagrant ssh
cd /vagrant
python {some python script that uses zipline}
In the spirit of making this a disposable dev environment install
everything in site-packages.

"nosetests" and "examples/dual_moving_average.py" both succeed
after the configuration finishes.
MAINT: Use DatetimeIndex instead of OrderedDict for trading days.

Looking forwards to Python 3 capability, maintaing code that uses
iterkeys would require some overhead of checking what Python version
is available etc., instead use a DatetimeIndex so there is no need
to use key iterators, reverse, etc. on an OrderedDict, as the
DatetimeIndex allows 0 and -1 index, as well as the needed fast `in`
functionality.