Introduces an alternative container that basically has an array. Initially that just stores context and all the un-serialized writables.
On access, it deserializes the writables. It knows the row count at that point and can determine row length from the first deserialized row (assumes its the same), so array represents a matrix with this row length.
For simple case of one row, it also serves as a list, so it can return itself as that "row". Otherwise it returns a readonly sublist.
Works for Tez, because Tez doesn't have to serialize/deserialize the hashtable. I am not sure the lazy part can be made to work for MR with its extra stage, probably not, so MR uses old container.
Need to get rid of index stored in each row, since unless rowCount is made short it will round to 8 bytes I presume and it's really useless.
Also need to run more tests, I ran some tez tests