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