slot_allocator: generate skeleton
slot_allocator: initial commit

See the big comment in slot_allocator.h.
slot_allocator: add hole limiting

A hole is defined as a slot that is both free and smaller than alloc_start.  We
normally search for free slots starting from the last slot we allocated.  This
is fast, but has the downside of spreading allocations over all of the backing
memory even when the number of allocated objects at any time is much smaller.

With this change, once the number of holes becomes greater than a constant
fraction (1%) of the total number of slots, we reset the allocation clock.
Because we know >1% of the slots before alloc_start are free, the allocation
time is still amortized constant time. We'd expect to only have to look through
4 bitmap words (128 bits) to find the next free slot.
slot_allocator: fix type of slot variables
slot_allocator: add likely macro

This is easier to read than __builtin_expect.
slot_allocator: expand alloc comment
slot_allocator: rearrange helper function
Merge into master from pull request #37:
slot allocator module (https://github.com/floodlight/bigcode/pull/37)