Column compression cleanup

- In dictionary encoding, the dictionary itself doesn't need to store the index (the values are stored in order of the index)

- In dictionary encoding decoder, uses an array to replace the original hash table so dictionary lookup is always O(1)

- Remove the position argument for extract/extractInfo methods in ColumnType

- init() is called in a ColumnIterator's constructor, and removed computeNext()

- Various other minor changes to improve code readability and test readability