[Optimization] Only have a single VirtualTrackColumn for each column in a track. This is done to reduce the number of calls to get_table()
[Optimization] cache nodes in the Database to reduce number of internal calls to get_nodes()
[Optimization] Only have a single DatabaseReader per h5file