Add ColumnCache class for maintaining a reverse index of column to position and
doing efficient column index lookups.
Switch BaseTrackCache and BaseSqlTableModel to use ColumnCache.
Add LIBRARYTABLE_PREVIEW definition.
Convert most uses of fieldIndex to use the integer-based version provided by ColumnCache.

Fixes a lot of hotspots identified when profiling rapid scrolling of the
library. For some simple QAbstractItemModel calls such as flags/data/etc. We
were doing ten to twenty QHash lookups per call.

The main effect of this is that the variance of these methods is drastically
reduced. They

BaseSqlTableModel::data max duration dropped from 6.7ms to 200us.
BaseSqlTableModel::flags max duration dropped from 459us to 122us.

Before:

Debug [Main]: Stat("BaseSqlTableModel::data","count=116189,sum=3.95154e+08ns,average=3400.96ns,min=61ns,max=6.73647e+06ns,variance=4.47143e+08ns^2,stddev=21145.8ns")
Debug [Main]: Stat("BaseSqlTableModel::fieldIndex","count=359787,sum=1.24198e+08ns,average=345.197ns,min=63ns,max=425162ns,variance=647674ns^2,stddev=804.782ns")
Debug [Main]: Stat("BaseSqlTableModel::flags","count=16235,sum=1.99808e+08ns,average=12307.3ns,min=7143ns,max=459422ns,variance=2.95675e+07ns^2,stddev=5437.6ns")

After:

Debug [Main]: Stat("BaseSqlTableModel::data","count=65178,sum=1.9198e+08ns,average=2945.48ns,min=46ns,max=222070ns,variance=4.16533e+07ns^2,stddev=6453.94ns")
Debug [Main]: Stat("BaseSqlTableModel::fieldIndex","count=203124,sum=3.24614e+07ns,average=159.811ns,min=52ns,max=29400ns,variance=28627.4ns^2,stddev=169.196ns")
Debug [Main]: Stat("BaseSqlTableModel::flags","count=9126,sum=9.51987e+07ns,average=10431.6ns,min=5844ns,max=122019ns,variance=1.60006e+07ns^2,stddev=4000.08ns")