Now that all errors are either underlying IO errors or of type MessageError, update the package overview documentation accordingly.
This commit adds a new MessageError type that is intended to allow the caller to differentiate between general io errors and and errors that resulted from malformed messages.