Pure-Rust asynchronous SSH library, both client and server

Create agent package, which generic over keys The main aim of this patch is to separate the agent code away from the specific key implementations. This required making the mention of keys in `agent/client.rs` and `agent/server.rs` generic. The logic that involved the keys is captured in a set of traits. All of this code now lives in `thrussh-agent`. A side-effect of this reorganisation was the carving out of `thrussh-encoding`. Since the the `encoding.rs` logic was standalone, it now lives in its own package, so that other dependencies can rely on it for implementing the agent's traits. The key types in `thrussh-keys` implement the agent's traits. The rest of the changes are fixing up the `thrussh-keys` and `thrussh` crates with the corresponding type changes, such as introducing `Error` enums and renaming of imports.

Created by  fintohaps  on August 16, 2021
IVSHPDNR6PQRZGJXJLPG2AG5GOXQLAALKD6WWBE4XYUEGAB24EHAC
Change contents