Use recommended approach for logging.

This splits the logging logic into
```logging```, which becomes a client library, wrapping freedom.core().getLogger()
and
```logger```, a freedom module implementing the well known 'console' API, which
can be installed as a custom freedom logger, via
```javascript
freedom('manifest.json', {
  logger: 'logger.json'
}).then(...)
```

In doing so, we can remove the ```core.console``` permission from all other
workers, and the logs will include freedom system errors.


Addresses https://github.com/uProxy/uproxy/issues/503
I think you can eliminate the need for `waiters` above by introducing a Promise member variable here which resolves once the `Logger` has been returned (that's just one way to do it, without changing the API -- my ideal approach would be to introduce an asynchronous static constructor but that would require an API change).