Implement MutationObserver

This is an implementation of the MutationObserver without relying on native MutationEvents nor native MutationObserver.

Part of the implementation and almost all of the tests come from https://github.com/Polymer/MutationObservers