docs(unit testing): improve unit testing Guide

This commit adds to the unit testing guide:

- add explicit section on additional libraries: Karma, Jasmine and
  angular-mocks and link to the docs for those projects too. Explain the
  benefit and use case for each of these libaries
- Add more fully featured test examples and add more documentation
  around them, in particular the controller test
- more clearly distinguish between the section on principles of testing
  and actual tutorial on writing a test

This should close #8220.

One thing that I wasn't sure on was if to update the controller tests to not presume the controller is in the global scope. In the original issue (#8220) it says:

> I think we talked about the controller syntax in #5076. We agreed to change that for 2.0.

So I left it, but it feels beneficial to me to update the controller example. Is there any reason why that can't be done now?