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
If I may, the logic is this:

<pre>
1. Place canary on all elements.
2. Then in a loop:
   a. Start processing element i.
   b. Remove the canary from element i.
   c. Do other staff on element i (like apply directives and run their compile functions).
   d. At the end of the loop, check element i (note i has **not** been incremented yet) for the canary property.
      i. If there is no canary, it means we removed (i.e. we have processed this element), so increment i.
      ii. If the canary is there, it means someone removed the element i, so `nodeList[i]` no holds the previously (i+1)th element (which is still unprocessed, hence has the canary still set), so don't increment i.
</pre>