extract Database::Hash from InMemory

Since we want to have a generic mixin for the bucketer that relies
on a specific database interface we need to make the database methods
all eventmachine-ish. This is why the Completion stuff was added to the
Hash database methods.
add yard as development dependency
fix bug in Database::Hash always succeed
Extract out Base bucketer mixin

This mixin will be used by all bucketers and defines the interface
for bucketers. The callback/errback code was added so as to allow
passing errbacks up the chain later when we add a bucketer database
that may actually errback.