fix(jqLite): change implementation of mouseenter/mouseleave event

Implement mouseenter/mouseleave event refering to http://www.quirksmode.org/js/events_mouse.html#link8 and jQuery source code (not dependent on jQuery).
The old implementation is wrong. When moving mouse from a parent element into a child element, it would trigger mouseleave event, which should not.
And the old test about mouseenter/mouseleave is wrong too. It just triggers mouseover and mouseout events, cannot describe the process of mouse moving from one element to nother element, which is important for mouseenter/mouseleave.

Closes #2131, #1811