Autobahn tests & hardening

#1 - Implement the autobahn websocket test client & server.

All of the positive test cases passed, but many of the negative test cases failed due to limited validation logic. Here are a list of validation improvements:
#15 - Validate control frame size limits and prevent fragmentation
#14 - Validate no reserved bits are set in the frame header
#17 - Validate close body is valid utf-8
#18 - Validate close status code
#20 - Validate OpCodes
#13 - Validate Text messages are valid UTF-8.

 Note I've only implemented very basic utf-8 validation so far. Detailed utf-8 validation is the only outstanding item on the autobahn tests. I have also not enabled any outgoing utf-8 validation, only incoming.