SSH API Implementation

This isn't yet rebased, nor is it mergeable, it's just up for review and comments.
Sitting next to @nulltoken: "The tweet is still valid."

So this supported type should be simply `Username` (or `UsernameQuery`?), and `SshUserCredentials` should be renamed to `UsernameCredentials` (or `UsernameQueryCredentials`)?