Add a couple of tools to help with testing and development

Add encode_frame & decode_frame tools. Currently these just work with
the actual header and ignore the payload.

encode_frame when run without any arguments will use defaults for all
the header values and creates a file called ws_hdr.bin

decode_frame when passed this file as its only argument will decode it
and display the header information. e.g

$ ./encode_frame
$ ./decode_frame ws_hdr.bin
Frame : 1
        FIN            : 1
        RSV1           : 0
        RSV2           : 0
        RSV3           : 0
        Opcode         : 0x01
        Masked         : 0
        Payload length : 125

Creating a custom header, e.g

$ ./encode_frame -o 0x2 -m 1 -k 410543210 -p 150000
$ ./decode_frame ws_hdr.bin
Frame : 1
        FIN            : 1
        RSV1           : 0
        RSV2           : 0
        RSV3           : 0
        Opcode         : 0x02
        Masked         : 1
        Mask key       : 0x6a 0x64 0x78 0x18
        Payload length : 150000

We set the opcode to binary message, set the masked bit to 1, gave a
masking key value and set the payload length.

Signed-off-by: Andrew Clayton <andrew@digital-domain.net>
Pretty print the opcode

Add an array containing the textual descriptions of the various
websocket opcodes to websocket.h and use this in the demo and
decode_frame to pretty print the opcode e.g from the demo server

    * opcode     : 0x01 (Text Frame)

Signed-off-by: Andrew Clayton <andrew@digital-domain.net>