Use less threads, makes it much simpler to reason about.
Key exchange and authentication is functional. Protocol definition has been moved to separate crate to speed up build time. Various cleanups. Take login info from command line, rather than hardcoded.