An Allocator is used to increment a key in allocation blocks of arbitrary size.
NewAllocator creates a new ID allocator which increments the specified key in allocation blocks of size blockSize. If the key exists, it's assumed to have an int value (and it needs to be positive since id 0 is a sentinel used internally by the allocator that can't be generated). The first value returned is the existing value + 1, or 1 if the key did not previously exist.
Allocate allocates a new ID from the global KV DB.
Incrementer abstracts over the database which holds the key counter.
DBIncrementer wraps a suitable subset of *kv.DB for use with an allocator.
Options are the options passed to NewAllocator.