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.
It is hard for our special "WithPointer" cases to fit std::pair's API. The problem is std::pair uses member variables "first and second" to refer the two elements, the key and data in our cases.
http://www.cplusplus.com/reference/utility/pair/
But our class needs some function to hide the implementation, or say, to hide if we store the address separately.