Refactor column reader

This simplifies the column reader and yields a slight perf improvement.
In particular:
 - removed the "consumed" boolean that was recording if the input had been consumed and instead actually read the next levels in consume(). This allowed removing the checkRead() call when reading a level as the levels have been read already.
 - switched from "boolean isFullyConsumed()" to "long getTotalValueCount()": Because the value is read only if the definition level indicates it is not null, it was causing extra checks and state maintenance. This caused a bunch of unit tests to be updated. 
 - I'd like to remove the "valueRead" boolean flag that would constraint the value to be read only once. However in the current implementation of filter we can read the value more than once to evaluate the filter first.
 - removed the counter of values read in a page as only one counter overall is sufficient.