core: Add code to read/write "varints"

Adapted from Google protobufs.  For several cases, we want to support
e.g. file sizes up to guint64, but paying the cost of 8 bytes for each
number is too high.

This will be used for static deltas.
core: Import bup's "rollsum" code, add a test case

For static deltas, one strategy that will be employed is to split each
object into chunks, and only include changed chunks in the deltas.
WIP static deltas