Add download-via-ssh substituter

This substituter connects to a remote host, runs `nix-store --serve`
there, and then forwards substituter commands on to the remote host and
sends their results to the calling program. The `ssh-substituter-hosts`
option can be specified as a list of hosts to try.

This is an initial implementation and, while it works, it has some
limitations:

* Only the first host is used
* There is no caching of query results (all queries are sent to the
  remote machine)
* There is no informative output (such as progress bars)
* Some failure modes may cause unhelpful error messages
* There is no concept of `trusted-ssh-substituter-hosts`

Fixing those limitations should be possible in a completely backward-compatible manner.