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.

MDN says *one of* childList, attributes or characterData must be set. So I think we might as well make them all optional. I suspect W3C does not give default values to `attributeOldValue`, `characterDataOldValue` and `attributeFilter` because `undefined` does not map to a default value; it is just another case.
For the all but the last, we can type them as `Boolean` with `= false`. For the last one, type it as `js.UndefOr[js.Array[String]]` with `= js.undefined`. `apply` will build an object with all properties set (some to `false` or `undefined`).