Extract sshd connections and sessions into their own files and structs
I want to add some guards against panicking in gitlab-sshd. Right now, a panic anywhere south of handleConn can take down the whole server, affecting unrelated connections. I also want to add some tests to make sure that the anti-panic code does what I want.
To do that, I need to be able to inject some code that will panic at runtime. Since that would be a bug, it's impossible to use acceptance tests to exercise it. I need to be able to inject the panicking code.
To be able to inject code, it needs to be refactored significantly. This MR introduces an injection point at handleConn, where I intend to put the recover() call. This also disentangles a number of data dependencies, which is a nice side-benefit. I stop here because I don't want to introduce behaviour changes alongside such a large diff recover() and a test to internal/ssh/sshd_test.go that calls handleConn with a handler that just panics, and make sure it doesn't bubble up.
Part of #511 (closed)