perf($interpolate): do not keep empty separators

Do not keep empty separators and keep references to where
each expression goes
perf($rootScope): do not use `Function::call` when not needed

When a `$watchGroup` delegates the call to a `$watch`, there is no
need to keep the context of `this`
fix($compile): update the jQuery .context when an element is replaced by replace:true directive

.context is a deprecated jQuery api still being used by at least live() queries, so
we need to keep it in up to date during replacement.

Because of the if check, we can be sure that we replace the context only when jQuery is being
used and the context property is set to the element being replaced.

Closes #8253
Closes #7900
fix($location): rewrite relative URI correctly if path==='/' in legacy html5Mode

Currently, legacy browsers get to use a clever scheme for resolving relative URIs in html5Mode,
and resolve the URI relative to $location.path().

Currently, $location.path() can be '/' under certain circumstances, which means that when we
split $location.path() on '/' and later join by '/' after adding another path component,
we end up with '//pathComponent'. $$rewrite fails to deal with this correctly, and effectively
the $location is never changed from the root path.

This CL corrects this by ensuring that the duplicate '/' situation does not occur when resolving
relative URIs.

Closes #8684
fix($location): consider baseHref in realtive link for legacy browsers
Use cached value of baseHref instead of calculating it
Add test for html5mode fallback with base path