feat(bundle): expose both blockid and offset

Replace blockids() view with blocks_in_file(offset).  By passing
the file offset in last bundle, it gives both blockid and offset.

Also add a tuple interface to block_arrangement.
chore: misc fixes

  - allow dereferencing data() on empty string_view
  - add missing header
  - remove old 3rdparty cruft
feat(rabin): add rabin fingerprint implementation

The code comes from the Agent, which is a C++ copy of the
Java version (ASL 2.0) from https://github.com/wurp/rabin-tool .

Changes made:

  - the window size is configurable at compile time
  - reordered some data members and operations