Reduce memory consumption / footprint

*Work in progress*

The idea of having a buffer per handler didn't work very well in terms of memory consumption and footprint.  This pull request removes that.

`inboundBufferUpdated()` is replaced with `messageReceived()`.  It's similar to that of 3.x, but it now is takes an array of messages instead of a single message.

`flush()` is replaced with `write()`.  Again, it takes an array of messages.

This change is basically going back to 3.x in terms of message handling.  `MessageBuf` has been removed and there is no confusion by having byte handler and message handler.