added configurable logging handler

By default n2o will use `n2o_log` module. A minimal custom logger should have implemented 3 methods `info/2, warning/2, error/2`.

Example (implemented 3 basic methods and `critical/2` which is available through `wf:log(n2o_epic_logger, "boom", [], critical)`):

```erlang
-module(n2o_epic_logger).
-export([info/2, warning/2, error/2]).
-export([critical/2]).

info(String, Args) ->
    io:format("Epic info message:" ++ String, Args).

warning(String, Args) ->
    io:format("Epic warning message:" ++ String, Args).

error(String, Args) ->
   io:format("Epic error message:" ++ String, Args).

critical(String, Args) ->
   io:format("Epic critical message:" ++ String, Args).
```
Config:
```erlang
{n2o, [
  {log_module, n2o_epic_logger}
]}
```