fix($compile): Detect when a directive `compile` removes `tElement`

Delect when a directive `compile` function removes `tElement` and keep on with the compilation from the following node

Closes #9198
We only increment the counter if `nodeList[i]` does not have the canary. This is, if we have a directive (say `foo`) that does
```js
  compile: function(tElement){
    tElement.detach();
  }
```
and we have
```html
<div>
  <div foo></div>
  <div bar></div>
  <div man></div>
</div>
```

then (without the patch) the compilation would be
* i == 0
* collect all directives from `<div foo></div>`
* call `compile` on all directives at `<div foo></div>`, this will remove `<div foo></div>`
* i == 1 (given that `<div foo></div>` was removed `nodeList[i] == `<div man></div>`)
* continue

Then, `<div bar></div>` never gets compiled