Reworking client library

Reorders items in the data-generating messages according to syslog
rules. The format supported before this commit depended on the syslog
token being a drain token, used internally by logplex as the HOSTNAME
value so that consumers know what drain the message is coming from.

Because we're a client, what we're using here is a logplex log token,
which goes in as the APP-NAME field, representing the  application
indirectly as its channel identifier.

The library also gained EDoc documentation and more comprehensive
dialyzer type specs