Handle accept errors using an exponential backoff strategy. Also uses a
semaphore to limit the max number connections.
Adds inline documentation and comments.
Continuation of #11. Refines the client structure and implements GET.
`clap` is decoupled from the lib code. This is done to avoid any CLI
parsing concerns to leak into the lib. The main motivation for this is
to allow the reader to focus on Tokio concerns and not CLI parsing
concerns.