util: Add get_remaining() function to DatagramIterator, to return number of remaining bytes.
ClientAgent: Simplify passing of DatagramIterators through the various handler functions; perform excess-bytes test in network_datagram.
util: Add DatagramIteratorEOF exception, which is thrown when a DatagramIterator tries to read off the end of its Datagram.
ClientAgent: Handle DatagramIteratorEOF specifically when looking for truncated datagrams.