introduce SMatrix class for sparse S matrices

SMatrix detects __setitem__ and updates reactions when the matrix is
changed.

SMatrix is only implemented for dok (for now)
Merge pull request #57 from aebrahim/arraymodel

ArrayBasedModel has updateable arrays and matrix