Improvements for StrMap: optimizations, add unsafeIndex, size, foldM, foldMap, Semigroup instance

Since we know that all StrMap objects have prototype Object, we know
they have no additional enumerable keys, so hasOwnProperty checks are
unnecessary.  Add efficient JS implementations for keys and values.  Add
standard Monoid and Monad fold functions, and use them internally.
Minor other changes to eliminate unnecessary function layers and
variables.  Fix and update tests.
Basic STStrMap, allowing efficient mutation of records
Remove deprecated arb-instances dependency
Add Foldable StrMap instance
Use STStrMap in StrMap constructors

Eliminate some duplicate code in _unsafe helper functions.  Move all the
ST functions that involve StrMap out of the ST module to do this, and
make the ST module interface more directly parallel the STArray one
(including an unsafe peek).  It would be nice to have more ST
operations, but it's not clear the best way to provide them safely
without redundant code (the ones that were there before violated Eff
semantics).
Merge pull request #11 from dylex/master

Additions, improvements, and optimizations for StrMap