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.
MAINT: Use explicit syntax for relative imports.

Python 3 requires using dot syntax for relative imports,
otherwise the import is treated as an absolute import, i.e.
an import of a module from outside of the project.

By using dot syntax now, imports should be compatible with both
Python 2.7 and Python 3.
MAINT: Use Python 3 compatible uuid hex property.

Instead of `uuid`'s `get_hex()` use `hex` which is available in
both Python 2.7 and Python 3.

From: @chinux23, Chen Huang <chen_huang@apple.com>
MAINT: Change relative library imports to use dot syntax.

Testing with a Python 3 virtualenv uncovered more relative imports
that did not explicitly use the dot syntax.
MAINT: Use print function instead of print statement.

The loader module printed some warning messages, these could
be changed to use a logger, but for now convert to use the print
function for compatibility with Python 3.
API: Conform timeperiad to TALib interface instead of BatchTransform's.

For the creation of a TALib transform use timeperiod intsead of
window_length, to be more in the style of TALib usage, since all
TALib functions may not ending up using BatchTransform, so start
the practice of adhering to TALib conventions to make porting and
explanation easier.
MAINT: Use numpy testing method instead of assertTrue.

So that when the test fails, the comparison is in a more readable
format.
ENH: Enable minute bar data with TALib transform.

Add a `bars` keyword arg, as is used with BatchTransform.

Also, instead of overwriting the window_length kwarg with timeperiod,
always use the lookback value from the created TALib function,
as timeperiod will be an input into that value if it exists.

Calculate `window_length` in minute mode so that there are enough
days to cover the minutes in the timeperiod.
ENH: Move blotter call to after handle_data() and add fill_delay option.
ENH: Add flag fill_delay kwarg to TradingAlgorithm.
BUG: Prevent algorithm init failure due to missing fill_delay.

Provide a default value for data_frequency, choosing 'daily',
so that the fill_delay is set even when a data_frequency value
is not in kwargs.

This does open up a place for disjointedness if the sim_params that
is passed to run does not match the data_frequency set during initialize.
Merge ability to specify timing of fills.

From PR #186