Handle one message at time on callback interface

On each invocation of `Connection#parse`, a list and an iterator are allocated. Remove these allocations by handling one incoming message per invocation on the callback interface.