Added ws_connbuf type

Er... it's not supposed to work this way.
A connbuf has a fixed amount of memory for the buffer.
 * `ws_connbuf_reserve`ing memory of that buffer is semantically the same as marking the next `amount` bytes as being reserved for being filled by a writing entity.
 * `ws_connfub_append` will then mark `amount` of those previously reserved bytes as written and resets the reservation.
 * `ws_connbuf_discard` will take `amount` of those written bytes and discard them, as in, move the stuff not yet discarded to the beginning of the buffer.

So you have _one_ buffer, with three different areas:
 * written bytes
 * reserved bytes
 * free bytes

You can discard written bytes, write to the reserved bytes and reserve free bytes.
I hope I have made sense here. If not, I can still pull out some paper and draw a few graphs on monday.