[feature] Integrate log4js as logger basis. (Closes #106)

This commit rewrites the logger to use [log4js](https://github.com/nomiddlename/log4js-node). There are multiple things that change.

* For the end user, the standard configurations still work but there is now an option `logger` where  one can add any arguments that can be added to `log4js.configure()`. This adds the ability to log to a file and stuff like that.

* Internally I've changed the tests to use the log event emitted by the logger when testing for console output.

* Because of the way log4js works global configuration of the log level no takes precedence over the local definition. 

* The tests have now the ugly side effect of printing the log messages. I don't know how to mock `console.log` to remove that. If anyone knows how to do that please let me know.

This pull isn't finished by any means. Please discuss and ideas, opinions and improvements. The aim is to get a future proof logger, so go ahead take it apart.