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
Just checking if the element changed would make the code even harder to understand as there are many cases we have to handle

1/ The element is the same (simple)
2/ The element was replaced by a comment (transclude: element)
3/ Multiple elements were replaced by a single comment (transclude: element + multiElement)
4/ A single element was removed (during compile, the directive did `tElement.remove()`)
5/ Multiple elements were removed (transclude: element + multiElement + `tElement.remove()`)

It is possible to do all this without adding a canary, but the code will be slightly more complex