SSH API Implementation

This isn't yet rebased, nor is it mergeable, it's just up for review and comments.
So when we try to authenticate the server might essentially say "Tell me who you are and I might tell you what I really support?", in which case the only acceptable `Credential` value would be a `new UsernameCredential { Username = "dahlbyk" }`. Then what?