Improve output for failed unit tests

- Log messages as errors if forwarded to console
- Include expected and actual values for all assertion types
- Include location of failed test
Rename assertion function `fail` to `assertUnreachable`

 Prevents collisions with unit testing function and is more descriptive.
Merge pull request #1304 from tschneidereit/unit-testing-improvements

Unit testing improvements