Allow for formatting message via string or function

Allows you to specify a format string with the following options;

%t timestamp
%T level
%TC level colorized
%m message
%M meta (serialized)
%MP meta (pretty}

Alternatively one could provide a function as the format options and it
will receive an object containing the meta, timestamp, level and message
for the log item.

This should close ticket https://github.com/flatiron/winston/issues/178