TestExecutor: Fix exception handling, refactor a little
TestExecutor: Fix exception handling, refactor a little

* Explictly catch and log exception from `_activeRunner.Dispose()`:
  That can happen when a misbehaving assembly causes a
  `CannotUnloadAppDomainException`, for instance by having some
  code run in a `finally` block.
* Unifies the exception handling between both overloads of `RunTests()`
  (that is, _always_ catch exceptions from `RunAssembly()`, and continue
  execution anyways).
* Unify the log messages between both overloads of `RunTests()`
  (distinguish between debugging and running tests in the log output)
* Fix a missing `_activeRunner.Dispose()` call when no tests have
  been found (the implementation might not need it, but the interface
  doesn't tell)

nunit/nunit3-vs-adapter