python 3 compatibility

All unit tests pass with python 3 using the cglpk solver.

Making the code work on python 3 revealed a few subtle bugs, which are
fixed in this commit. However, most of this commit is simply python
compatibility changes, such as using six.iteritems or print_function
instead of print.
re-enable tab completion in DictList

A more robust method of tab completion works for both py2 and py3
rewrite Formula

* More robust, works under py2/3
* Faster because weights are calculated lazily (they are a @property)
unit tests for python 3 on travis CI

 * run unit tests for both python 2.7 and python 3.3
 * use pre-built wheels for compiled dependencies (hosted on
   http://clostridium.ucsd.edu/wheelhouse. This is faster and better
   that using apt-get and simlinking scipy in
small fix to version.py (python 3 byte vs str)
prevent double error message if no scipy

Two warnings were presented when trying to import arraybasedmodel
Replace copy function

 * copy is now simpler and ~2-3x faster, which makes it ~5-6x fast as
   using deepcopy
 * guided_copy can now be deprecated
DictList no longer uses _object_dict (and speedup)

It is faster to access an item from a list than from a dict (at least at
sizes up to ~10^6 elements), and simpler to just use the list as well.
This also means that operations have only one index to update (the
_dict) instead of 2.

Also improved a few of the list methods.
more unit tests for DictList
DictList sclices in __setitem__ and __delitem__

DictList now behaves correctly by using the slower behavior
(regenerating the entire index) when a slice is passed into these
functions.
update gitignore
test: ensure DictLists remain independent
add Model.repair

For now this function will regenerate DictList indexes. Eventually, this
function should also ensure all relationships are correctly maintained.
Reaction.pop will accept a metabolite id

If a string is given to Reaction.pop, the function will find the
appropriate metabolite object and remove that from the reaction.
First try at json import/export
Merge branch 'master' of github.com:opencobra/cobrapy into solver_api_change
COBRA solver API changes and deprecations

In order to simplify the API, legacy functions introduced before the
solver interface improvements are deprecated. All functions will be
updated to use the new API. This follows the pythonic paradignm of there
being one solid way to do things.

The following options are removed:
    * new_objective
    * update_problem
    * the_problem

To modify these in the LP object, use the solver API functions directly.
Changing the COBRA model will still work as expected.
double deletion uses parallel workers

Implement parallel workers to solve knockouts. The workers can use the
same solver objects, and is especially fast if the solver object
preserves the basis. Double knockouts for iJO1366 were computed in under
17 minutes using 4 cores on an Intel i7.

This commit only implements this for FBA, not for MOMA.
removed deprecated options in double_deletion

double_deletion still uses the older code by default. The new faster
functions are present as their own functions, but are not called by the
wrapper function (for now).
only numpy needed for double deletion

scipy is only necessary if MOMA is used