Frozendict implementation for reaction.metabolites

Pure python this time, no messing with internal functions to avoid
difficult to trace segfaults.
Frozendict uses notimplementederror
Merge pull request #66 from aebrahim/frozendict

Frozendict implementation for reaction.metabolites
revert to reversible fixes solution as well

Implements change from #73

Using revert_to_reversible will convert the associated solution object if
it exists to use only the reactions in the resulting model, subtracting
the reverse flux.
pFBA unit test calculates absolute values

It no longer expects the solution.x vector to contain all positive
numbers
Merge pull request #74 from aebrahim/reversible_revert_solution

Reversible revert solution
small bug in load_matlab_model

model should still load if "description" field is not present"
cobra.io.save_matlab_model can load without gpr

Both IndexError and ValueError for exception handling
update_pickles should create a binary file

The file is now opened with "wb" instead of simply "w" which prevents
bugs when working between the mac/linux and windows.
gapAnalysis now takes a solver argument
add back Reaction getters as deprecated functions

get_reactants and get_product will return the newer reactant and product
properties and raise a deprecation warning.