Made Logger and Underlying private to the package

This enables testing of private classes within the same package,
without exposing the classes to external users.
Add tests for Transport

The test suite now checks that the write method is correctly called
on every registered transport when logging.