use configurable highWaterMark as limit for buffer
fixes based on review
inherit from abstract-leveldown
inherit from AbstractLevelDOWN & AbstractIterator
remove some c++
use abstract-leveldown for ChainedBatch
remove unused macro
remove some c++ from batch