Bugfixes:
* After reading a message header in `Client.read_message()`, if the number of bytes declared in the header does not match the expected message size, the declared number of bytes are now read before raising an `UnknownMessageType` error. If this error is handled, subsequent `read_message` calls should continue to work by reading the next header.
* All RTMA errrors should now be caught by web manager and forwarded to the websocket when possible. The proxy client should continue running when possible after forwarding the error (the javascript client may choose to disconnect when handling the error)
* The `Message.from_json()` and `Message.from_dict()` methods now treat lists of character strings (strings of length <= 1) as equivalent to strings. Previously the javascript message compiler would compile string fields to a list of empty strings, which could not be decoded back to the python definition in web_manager.
* The javascript message compiler now outputs a string type that will evaluate to an empty string instead of an array of strings.
* web_manager now exclusively prints using logger class instead of `print()`
* web_manager now sends FAILED_MESSAGE if it fails to forward messages to websocket
**Full Changelog**: https://github.com/pitt-rnel/pyrtma/compare/v2.2.1...v2.2.2