Changed from using HTMLElement to Element for matches

Because
a) ie8 doesn't support HTMLElement
b) the spec defines matches on Element.prototype not on HTMLElement.prototype anyway

Also added p.matches as the preferred native method to use. Does it also need vendor prefixed versions here I wonder?