StaticRowSink / DynamicRowSink

refactors sinking tuples to an ISink interface, and provides two implementations :

StaticRowSink : duplicates current static row behaviour
DynamicRowSink : each tuple contains a row-key, column-name, and column-value field, which are upserted to wide rows