Implement MutationObserver from scratch

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