Eng 6095 index with address

Don't merge, only for review.

Pass eecheck on local machine, but haven't check the result of Junit test.

I worry about how to deconstruct Key and Data: is the default deconstructor enough?

After refining the code, the next step is to append address to KeyType other than IntsKey.
I don't think that this class is needed. My idea was to use std::pair for exactly this case and to adapt our special "WithPointer" cases to fit std:pair's API.
This would eliminate one possible source of error (in assignment, copy, destructors, etc.).