DOM Level 4 Mutations Observers support

- Depends on [mutation observer](https://github.com/component/mutation-observer)
- Only activates the observer if there are elements to watch
- Retains the exact same interface
- Retains interval based technique as a fallback