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
Can you clarify what you mean by a promise member variable? The ```waiters``` array of pending logs seems to serve the same purpose and seems fairly understandable.