metalssh 0.0.1

Experimental SSH implementation
# SSH Message Types

## Session Establishment

1. s -> c kexinit
2. c -> s kexinit
3. c -> s kex_ecdh_init
4. s -> c kex_ecdh_reply
5. s -> c newkeys
6. c -> s newkeys

## Extension Negotiation

Optional, especially for client

1. s -> c ext_info
2. c -> s ext_info

## Authentication

TODO: May be other required message types in this flow

1. c -> s service_request (ssh-userauth)
2. s -> c service_accept
3. c -> s userauth_request (publickey probe, no signature) [n times until ok]
4. s -> c userauth_pk_ok
5. c -> s userauth_request (publickey with signature)
6. s -> c userauth_success

## Channel Setup

1. c -> s channel_open (session)
2. s -> c channel_open_confirmation

## Command Execution

1. c -> s channel_request (exec)
2. s -> c channel_success
3. s -> c channel_data (stdout)
4. s -> c channel_extended_data (stderr)
5. s -> c channel_request (exit-status)
6. s -> c channel_eof
7. s -> c channel_close
8. c -> s channel_close

## Disconnect

1. c -> s disconnect