add getUniqueIdentifier and use SQL_CALC_FOUND_ROWS
add getUniqueIdentifier()
cache total item count
allow adapter override (for test cases)
don't call count() because query is run
use adapter's own identifier instead of spl_object_hash