Allow caller to provide a key file for site

As well as specifying the port and username, a caller can now
provide an optional key-file name to use. This will override the
identityfile value found in the SSH config file.

Also, added logging to the Site object wherever it raises an
exception so that debug information is available even if the client
catches the exceptions.