Cleanup: define an 'error' typespec

Rather than using an ad-hoc '{:error, reason}' typespec in
several places and defining 'reason' as a string, we can
centralize the definition of an error type and repeat
ourselves less as a result.
Use ExActor 'definit' in Config module
Implement PluginLoader as ExActor actor
Implement TCPServer as ExActor actor
Document new protocol-agnostic cleverness

As of now, we're going to determine the protocol being used by a
particular client by associating each client type with a particular
port number in the config. A client that wants to use a particular
protocol will simply connect to the appropriate port; then, the TCP
server can simply fetch the appropriate translator module and run
all future communication with the client in question through said
translator.

This is probably the most widely-accepted way of doing stuff, and
I'm honestly pretty embarassed that it only just now occurred to me.
I'm a networking noob, ok? :P
Allow per-port specification of client protocol

The Config module and example config file now include a way
to specify which client protocol will be assumed of a client
connecting on a particular port.