Update Element.prototype.matches

- update mutation helper
- add tests.js
- update browser compatibility, cleanup