libmudtelnet 2.0.1

low-level Telnet protocol implementation for MUD clients
Documentation
# v2.0.1 (pending)

Initial release of `libmudtelnet` - a fork of `libtelnet-rs`.

## Bug fixes

* A `SE` byte that isn't preceded by `IAC` is now properly handled as a normal
  byte during Telnet subnegotiation processing.
* Fixed a panic when Telnet option code 0xFF is negotiated, and a truncated 
  subnegotiation (e.g. `IAC SB IAC SE`) is received.
* Multiple escaped `IAC` bytes (`e.g. IAC IAC IAC IAC`) are now properly 
 unescaped (e.g. `IAC IAC`) instead of truncated (e.g. `IAC`). 

## Features

* Many API types now derive helpful traits (`Debug`, `Eq`, etc.).
* An optional `arbitrary` crate feature is now available to enable generating 
  arbitrary `event::TelnetIAC`, `event::TelnetNegotiation` and `event::TelnetSubnegotiation` 
  instances for testing.

## Misc

* CI improvements.
* Fuzz testing.
* Simple benchmarking.
* Small performance and safety improvements (avoiding direct indexing, etc.).

# v2.0.0

As of version 2.0, `libtelnet_rs` has switched over to using the `bytes`
[crate](https://crates.io/crates/bytes).

With this change, the method signatures for most methods that return `Vec<u8>`
now return `Bytes` instead.

For most situations where a `Vec<u8>` would be required, the returned value can
simply be changed to utilize `Bytes::to_vec()`.

To make usage of the new dependency a little bit easier, it is also re-exported
as `libtelnet_rs::bytes`.