feat(bundle): internally calculates sha1 hash

`mark_new_block` now only accepts a block size parameter.  A new
`blocks` member function exposes the internal block records.
feat(bundle): support rabin boundary

Constants are taken from the agent, not configurable at this
point of time.

Random data gives little pattern for Rabin fingerprint to work, but
the whole thing need to be compared against the agent anyway.