Suppress transport errors

You probably don't want your application to stop working when the Riemann server is down, so this changes the decorator such that it catches `bernhard.TransportError`.

It could be problematic to completely silence the exception if you need it to detect misconfiguration, so I'm also adding an optional `logger` parameter. It accepts a standard Python logger and is used to log the swallowed exceptions.

The last commit introduces the change; the others are small refactors.