Use MutationObserver if available

This will need to be tested in multiple browsers:

- [ ] Chrome
- [ ] Android Browser (not Chrome)
- [ ] Firefox
- [ ] Safari
  - [ ] Mac OS
  - [ ] iOS
- [ ] IE
  - [ ] IE 8
  - [ ] IE 9
  - [ ] IE 10
  - [ ] IE 11
Also, I would have added a unit test for this, but PhantomJS doesn't support MutationObserver