Add MutationObserver

MDN: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
W3C: http://www.w3.org/TR/dom/#interface-mutationobserver

Looks like MutationObserver is an experimental API ([from the list](https://developer.mozilla.org/en-US/docs/Web/API)), but it seem to be supported by all modern browsers, and other experimental APIs like [AnimationEvent](https://github.com/scala-js/scala-js-dom/blob/master/src/main/scala/org/scalajs/dom/lib.scala#L6281), [DOMParser](https://github.com/scala-js/scala-js-dom/blob/master/src/main/scala/org/scalajs/dom/lib.scala#L5278) are already in scala-js-dom.

Sadly, as I tested with IE11 (specifically 11.0.9600.17107), looks like IE11 throws an error if I pass a object that has property `attributeFilter` with value `undefined`.

```javascript
// js code

var observer = new MutationObserver(function(ms, self){
  ms.forEach(function(m){ console.log(m.type) });
});

var target = document.getElementById("playground");

observer.observe(target, {attributes: true, attributeFilter: undefined}); // => throws an Error

observer.observe(target, {attributes: true}); // => OK

observer.observe(target, {attributes: true, attributeFilter: []}); // => OK
```

Chrome and Firefox works fine, though...

Maybe we should make all the default values to `js.undefined` and return an object that has properties with only non `js.undefined` values. WDYT?