Track number of sequential bytes received.

This change also updates the algorithm used to send acknowledgments so
that it uses the correct ranges as specified by the
received-to-be-marked queue.

Additionally, messager finalization states are now available. A program
wishing to ensure that both the remote side and local side are happy
with everything and ready to end a connection may implement a check like
follows:

    while (!messager->my_final || !messager->their_final)
        /* Process more. */

Closes #2; closes #3.