key-value mapping works

key-value mapping works when generating the table r and s.

However, we cannot validate the mapping when we get the join result because the validation functions are member of join_table, but during probing, we do not have table r or s, we only have record_r and record_s received.

We can neither declare the validation functions inside record_r or record_s because it will make the memory size of these two structures (actually classes now) unpredictable, thus cannot be easily copied using pointers.

Design issue seems hard to solve. Will try to hard code k-v mapping functions in main.cpp and extern them in other cpp files when necessary. But it is apparently not a good design