Improve activeTarget setter; call template methods

Apparently there was a setter for this and it didn't respect the
lifecycle template methods of the targets involved in the change.

Now it does. Added some basic specs to cover that these are being called
when expected.
Ensure components surrenders activeTarget on exit

I took the liberty of moving the leaveDocument calling ahead of
unsetting the parentComponent so there's some context to work with
before being removed.

As it was it was a little weird being effectively "removed" from the
component tree while still appearing in the DOM tree.