perf($compile, jqLite): reduce creation of unnecessary jquery objects

This removes the creation of many duplicate or unnecessary jQuery objects in the compile/link phases as well as in some jqLite methods.

Most of the changes are pretty minor and safe (as far as myself and the tests can tell).

The only bigger change is exposing `jqLiteData/jqLiteRemoveData` as `jqLite.data/removeData` to match the jQuery equivalent (https://api.jquery.com/jquery.data/). This allows getting/setting data without creating the jQuery wrapper object and allows for the biggest reduction in jQuery objects in compile/link. This also reduces the jqLite objects created in the `scope/isolatedScope/data/inheritedData` methods and simplifies `jqLiteInheritedData`. Note that this change overrides the first commit.

If interested I can squash all the commits and maybe add more tests for the jqLite changes.