SMatrix works with both lil and dok
revert arraybasedmodel default to lil
implement LinkedArray, add for model.reactions

LinkedArray is an ndarray which updates model.reactions (or metabolites)
appropriately if it is changed. For example, model.lower_bounds[4] = 10
will cause model.reactions[10].lower_bound = 10 to be automatically
executed as well.
Linked array for metabolite bounds
setters for ArrayBasedModel properties

model.reactions.lower_bounds = [-1000, 0 ....] works
ArrayBasedModel.S is a read-only property
basic unit tests for ArrayBasedModel
add more ArrayBasedModel unittests
cleanup of ArrayBasedModel

Move some functionality into SMatrix classes so both can be treated
identically instead of checking for type and doing different operations
throughout the code. Makes things cleaner and simpler.
improve ArrayBasedModel (lil) creation

Now only ~ 5% slower than master instead of ~ 100%
constraint_sense is now also a LinkedArray
ArrayBasedModel.add_reactions is tested and works

Wrote a unit test for this. There were pre-existing bugs in the code
prior to the switch to LinkedArray and SMatrix which were also fixed.
Merge from upstream/master into arraymodel

Conflicts:
	cobra/test/unit_tests.py
ArrayBasedModel gets all core unit tests

In addition to its own specific test, ArrayBasedModel gets put through
all the tests that Model has as well.
make ArrayBasedModel pass all unit tests

Small bugfixes which were caught when putting it through the same unit
testing that Model has to go through.
ArrayBasedModel does not update for empty model

Some versions of scipy will crash if an empty lil matrix is created, so
this avoids the issue.
ArrayBasedModel is also not updated with 0 mets

Same as with reactions, but it is possible to have reactions with no
metabolites added, so this also needs to be checked.
Merge pull request #59 from aebrahim/arraymodel

ArrayBasedModel has updateable arrays and matrix