Simple backend based on the TCP transport which offers node discovery
based on UDP multicast. This is a zero-configuration backend designed to
get you going with Cloud Haskell quickly without imposing any structure
on your application.

To simplify getting started we provide special support for master and
slave nodes (see startSlave and startMaster). Use of these functions
is completely optional; you can use the local backend without making use
of the predefined master and slave nodes.

on four different machines (with IP addresses 198.51.100.1..4), and run the
master on a fifth node (or on any of the four machines that run the slave
nodes).

It is important that every node has a unique (hostname, port number) pair,
and that the hostname you use to initialize the node can be resolved by
peer nodes. In other words, if you start a node and pass hostname localhost
then peer nodes won't be able to reach it because localhost will resolve
to a different IP address for them.

Master nodes

startMaster finds all slaves currently available on the local network,
redirects all log messages to itself, and then calls the specified process,
passing the list of slaves nodes.

Terminates when the specified process terminates. If you want to terminate
the slaves when the master terminates, you should manually call
terminateAllSlaves.

If you start more slave nodes after having started the master node, you can
discover them with later calls to findSlaves, but be aware that you will
need to call redirectLogHere to redirect their logs to the master node.

Note that you can use functionality of SimpleLocalnet directly (through
Backend), instead of using 'startMaster'/'startSlave', if the master/slave
distinction does not suit your application.