setup.py always rebuilds cglpk.c

 - uses force=True in cythonize.
 - cython is required to use the develop option
 - misc changes to setup.py (passes pep8 now)
Fix cobra.io.json types and attributes

This fixes issue #98 where numpy objects failed to be saved.

The exclude_attributes functionality was also removed. This will cause
the json input and output to be consistent and reproducible, reducing
the possibility of generating malformed files. The module will export
the minimal amount of information needed to rebuild the cobra model.

In addition, the module can now load and dump json strings. The code
also passes pep8.
Add unit test for cobra.Gene.remove_form_model

This function raises an Exception while running (issue #119)
Fix cobra.Gene.remove_from_model

Going through the gene reaction rule setter caused all the gene
associations to be recomputed, causing an error when attempting to
remove the gene. Because the association does not need to be entirely
recomputed, setting the underlying _gene_reaction_rule instead fixes
this issue. This closes #119 on github.

In addition, the model parameter was unecessary to this function and has
been deprecated.
Finish implementation of Model.repair

This will:
 - recompute the relationship between genes and metabolites and their
   respecitve reactions.
 - Rebuild indexes for DictList
 - Point _model of genes, metabolites, and reactions to the model
No longer import cobra during setup.py

The version is imported directly by inserting the cobra directory into
the sys.path directory.
Replace Solution.dress_results with lazy property
create_test_model does not catch failures

The previous behavior was to fall back to creating a new test model
from the salmonella sbml file.
Fix bugs and improve testing of DictList

Specifically, the following issues were fixed (with tests added):
 - more robust pickling/unpickling
 - overriding copy and deepcopy now unnecessary (reduce propensity for
   bugs)
 - IndexError correctly raised when passed in missing Object
 - detection of duplicate ids in iterable on extend and setitem with a
   slice
 - correct type returned on slicing
 - skip uniqueness checks on operations which are known to already
   have unique ids

Other changes:
 - docstring cautions against using DictList.remove
 - pep8 compliance increased
Make solver interface more unified

Fixes #99

 - Model.optimize no longer gives parameter values by default. The
   defaults are left to the solvers.
 - Each solver has a _SUPPORTS_MILP attribute which can be used to
   determine if it solves mixed integer programs.
 - get_solver_name will raise a SolverNotFound exception when it can not
   find a suitable solver.
 - Each solver has a solver_name attribute which is used instead of
   attempting to remove the word "solver".
 - Solver options are now more unified. All solvers now accept (in
   addition to their own additional ones)
   - time_limit
   - tolerance_feasibility
   - tolerance_markowitz
   - iteration_limit
Remove deprecated solver functions
solvers no longer uses external parameters

Instead of importing parameters from an external parameters module, each
solver defines its own parameters. The following solvers were updated:
 - glpk
 - gurobi
 - cplex
Additionally, the parameter handling code was simplified,
making it more readable and easier to debug.
glpk_solver parameter improvements

The following changes were made:
 - raise an exception when passed an unsupported option.
 - Use tolerance_feasibility instead of tolerance_optimality for tol_dj
   and tol_bnd
 - support for lp_method as strings
cglpk supports lp_method and verbose options

also warns for unsupported threads and mip_gap_abs
improve cplex parameter handling

When setting parameters, the cplex solver will now convert strings
encoding the cplex constant to the constant itself. For example, setting
lp_method="auto" will cause execution of
lp.parameters.lpmethod.set(lp.parameters.lpmethod.auto)

Additionally, an invalid paramter will raise a ValueError. Finally,
verbose is handled as an option to allow output (silenced by default).
gurobi parameters updated

Now supports lp_method strings and verbose.
cglpk rebuilds basis on failure

If solving the model fails, the cglpk bindings will attempt to use
glp_adv_basis and solve the model again. This alleviates regressions in
glpk 4.51-4.54 as detailed in issue #117.
modify.revert_to_revsible handles unsolved model

Previously, cobra.manipulation.modify.revert_to_reversible assumed the
model had been optimized as an irreversible model, and would fail if
optimize had not been called, or had been called when the model was
reversible.

This fixes #122
fix bug in mat->sbml translation

Reading in a mat model did not set the compartment, and writing an SBML
model would fail if compartment was None, causing the following code to
error out:

```
>>> import cobra.test
>>> cobra.io.write_sbml_model(cobra.io.load_matlab_model(cobra.test.ecoli_mat,
    "test.xml")
```

This commit fixes both issues and adds a unit test to ensure all model
loaders appropriately set the compartment.
Follow SBML Rerversibility tag guidelines

SBML requires that an irreversible rection never be negative. However,
cobrapy's definition of reversibility is more consistent with the
biochemical definition that flux flows both ways. Therefore, set the
SBML reversibility flag when writing out a file by using the criteria of
lower_bound < 0 instead of the Reaction.reversibility property.

This fixes #114.