Usage

layoutHook = modHost "baz" m1 $ -- apply layout modifier m1 to all layouts on host "baz"
onHost "foo" l1 $ -- layout l1 will be used on host "foo".
onHosts ["bar","quux"] l2 $ -- layout l2 will be used on hosts "bar" and "quux".
l3 -- layout l3 will be used on all other hosts.

In another scenario, suppose you wanted to have layouts A, B, and C
available on all hosts, except that on host foo you want
layout D instead of C. You could do that as follows:

layoutHook = A ||| B ||| onHost "foo" D C

Note that we rely on '$HOST' being set in the environment, as is true on most
modern systems; if it's not, you may want to use a wrapper around xmonad or
perhaps use setEnv (or putEnv) to set it in main.
This is to avoid dragging in the network package as an xmonad dependency.
If '$HOST' is not defined, it will behave as if the host name never matches.

Also note that '$HOST' is usually a fully qualified domain name, not a short name.
If you use a short name, this code will try to truncate $HOST to match; this may
prove too magical, though, and may change in the future.

Structure for representing a host-specific layout along with
a layout for all other hosts. We store the names of hosts
to be matched, and the two layouts. We save the layout choice in
the Bool, to be used to implement description.