Replace DOMNodeInserted with Mutation Observers when supported.

Detecting DOM changes with [Mutation events](https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events) such as the DOMNodeInserted event can be very slow. [MutationObserver](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) is a new specification to replace it while fixing the performance problems.

FlatUI uses the `DOMNodeInserted` to update select elements when their child nodes change, I could notice it being extremely slow when a select elemnt had close to 1k nodes. Replacing it with `MutationObserver` solved the problem for me.

This pull request adds code to check for browser support, and when availiable, replace `DomNodeInserted` with `MutationObserver `. There must be no compatibility problems as the code still fallback to the current solution.