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.

@sjrd Oh, you read my mind! I was just about to asking how to set `undefined` to Boolean typed fields.

Then, next question is which properties are optional or not.

[MDN says](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver#MutationObserverInit)

```
NOTE: At the very least, childList, attributes, or characterData must be set to true. Otherwise, "An invalid or illegal string was specified" error is thrown.
```

On the other hand, [W3C defines](http://www.w3.org/TR/dom/#interface-mutationobserver) only `childList` and `subtree` have default value.

```
dictionary MutationObserverInit {
  boolean childList = false;
  boolean attributes;
  boolean characterData;
  boolean subtree = false;
  boolean attributeOldValue;
  boolean characterDataOldValue;
  sequence<DOMString> attributeFilter;
};
```

I think our choises would be:

1. make every parameters as optional. (leave it to the runtime)
2. make `childList`, `attributes` and `characterData` as mandatory. (MDN)
3. make every parameters except `childList` and `subtree` as mandatory. (W3C)

I prefer 1 or 2. 3 is too messy to call the method.

Any suggestions?