reaction string no longer needlessly generated
Speedup DictList.remove

This speeds up the function ~3x on iJO1366 and likely more for larger
models. This replaces list.remove(x) with list.pop(DictList.index(x))
which prevents n string replacements from being done and replaces them
with the o(1) dict lookup. This is okay because the items are unique in
the DictList
remove DictList.get_id for less function call overhead
DictList.query uses list comprehensions
deal with copying reaction to pass unit tests
speed up add reaction
include tests for deleting reactions
fix bug in DictList.query (with added test)
adding reactions requires less iteration w/ tests

Go through nested loops fewer times and get everything done on the first
iteration. Unit tests were also added to ensure proper behavior
Merge branch 'master' into speedup
Model.add_reactions warns when not given a list

It will convert the single reaction into a list, but will at least raise
a warning.
DictList.pop and DictList.insert smart reindex

Instead of simply calling the reindex function, these functions will
simply update the index in _dict for the value if it has changed.

The object_dict is now no longer needlessly regenerated
Merge pull request #16 from aebrahim/speedup

Speedup add/remove reactions