let abstract-leveldown do the hard work

I've shifted `isBuffer()` to be an overridable method of AbstractLevelDOWN, same with `_checkKeyValue()` so you can override them and implement your own version; this means that you no longer need to copy so much of what AbstractLevelDOWN should be doing for you. Same could apply to the iterator but I've only done the main index.js.