fix($compile): isolate and non-isolate directives on the same element

A non-isolate directive should not get the isolate scope of an isolate directive on the same element.

Paired with Tobias.

BREAKING CHANGE: Directives without isolate scope do not get the isolate scope from an isolate directive on the same element. If your code depends on this behavior (non-isolate directive needs to access state from within the isolate scope), change the isolate directive to use scope locals to pass these explicitly.

// before
<input ng-model="value" ng-isolate>

.directive('ngIsolate', function() {
  return {
    scope: {},
    template: '{{value}}'
  };
});

// after
<input ng-model="value" ng-isolate>

.directive('ngIsolate', function() {
  return {
    scope: {value: '=ngModel'},
    template: '{{value}}
  };
});
fix($compile): only pass isolate scope to children that belong to the isolate directive

I had to fix one unit test, as it assumed the broken behavior, where application template gets the
isolate scope of other (isolate) directive, rather than the regular scope.

BREAKING CHANGE: Child elements that are defined either in the application template or in some other
directives template do not get the isolate scope. In theory, nobody should rely on this behavior, as
it is very rare - in most cases the isolate directive has a template.
fix($compile): replaced element has isolate scope
chore(): DONT CHECK IN: Original sorting
WIP: todo
WIP: google3 fixes
WIP: root element test
WIP: more test
WIP: add jqLite#isolateScope
WIP: fix isolate scope distribution to controllers