Problem: C codec is too slow

Solution: rewrite this to reduce/eliminate memory allocations. This
breaks existing apps that use generated C codecs, so the old codec
is renamed to zproto_codec_c_v1.gsl.

The new codec has a simpler API without the hash/list access methods.
It works as follows:

* Rather than create/destroy an object for each recv/send, you keep
  the object for the duration of the socket.

* A single object gets reused for all requests and responses, with
  its properties being overwritten.

* Short strings are allocated as 256-char arrays within the object,
  so not allocated/freed during send/recv.

* The codec uses the low-level libzmq API to reduce heap memory
  use.

* Implements the exact same wire protocol, of course.
Problem: zproto_server_c.gsl used old codec style

Solution: switch to using new faster codec. This breaks existing
apps in a specific way (sorry, you will have to fix them):

* self->request and self->reply are now replaced by the single
  property self->message. Note the new format of _client_t:

    struct _client_t {
        //  These properties must always be present in the client_t
        //  and are set by the generated engine; do not modify them!
        server_t *server;           //  Reference to parent server
        $(proto)_t *message;        //  Message in and out

        //  TODO: Add specific properties for your application
    };

* These methods are gone from the v2 codec, so no longer available
  to your zproto_server apps:

    _decode
    _encode
    _recv_nowait
    _send_again
    _encode_xxx
    _send_xxx
    _dup
Problem: "dictionary" type is poorly named

This is inconsistent with the other types (chunk, frame, uuid, msg)
that correspond to CZMQ classes. It's also long and boring to type.

Solution: rename to "hash".
Merge pull request #147 from hintjens/master

Massive breaking changes for C server/codec