Make Server#handle_request public

It needs to be, the only reason it worked before was that the tests accidentally made the overridden versions public.
Add Server#handle_error

This formalizes the error handling, and makes it possible to recover from errors that occur during the response encoding.
Close the connection when a message can't be decoded