PY3: use MutableMapping for python 3

While Python 2.7 also has `collections.MutableMapping`, it's not compatible with current code (raises some metaclass errors).

This PR works in both Python 2.7 & 3.4 (3.3 not tested, but should work too).
Providing `__hash__` for mutable objects can lead to strange issues. Why is it needed?