Fixes #2946: Read operations of map should respect expired keys

Fixes #2946:

Includes:
- From now on, operations like keySet, values, entrySet are respecting expired keys.
- Removed getReadonlyRecordMap method from RecordStore. 
- Introduced ReadOnlyRecordIterator. And getReadonlyRecordMap calls replaced with iterator calls.
- Some cleanups & renamings
Instead of doing a sleep, you can also do an assertTrueEventually with a timeout.