16% end-to-end performance improvement from the skiplist

This commit changes each element in the skiplist to avoid an extra pointer
indirection on items with sufficiently dissimilar keys.  Its effect is dependent
upon the comparator implementation.  The skiplist stores a (uint64_t, const
char*) instead of a const char*.  The uint64_t is a number that compares similar
to the key, such that:

    num_a < num_b => key_a < key_b
    num_a > num_b => key_a > key_b

Only if the numbers are equal does the skiplist have to follow the const char*
ptr.