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)
cglpk build on clang bug

The latest version of clang on MacOSX errors out by default with unused
arguments, and building a python extension will use the unsupported gcc
only argument -mno-fused-madd. To prevent the error, the compiler also
needs to be passed the argument -Qunused-arguments.

This fixes issue #82
Merge pull request #83 from aebrahim/glpk_osx

cglpk build on clang bug
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
fixed a typo single_deletion
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.