ISPN-4836 Change entrySet, keySet and values to be backing maps

* Collections now fall back to calling cache or using entry iterator
* Reworked entry iterator to use a visitable command
** Allows for compatibility support
** Also easier detection of transactions


Why use JDK assertions and not `fail()`?