- Added a `Thread` named `streamReader` which is created upon `CryptClient` construction and started. It will read from our river stream `stream` and push the TLS data (bit-by-bit of the record) to the Botan client via `receivedData(ubyte*, sizet)`
- Added `CryptClient` which is a kind-of `Stream` (from the `river` library)
- Constructor takes in an underlying connection, potentially a socket, but some `RiverStream` that can be used for the Botan client to communicate with
- Added `openCheck()` to be called prior to any code inside the `write`, `writeFully`, `read` and `readFully` methods which calls the `botanClient.isActive()`, if this is false (i.e. the TLS session is not active) then an exception (a `StreamException`) is thrown