Introduce Specification class

.. used to create a 'specification' against which we match
   a rideitem when plotting etc.

.. so rather than passing an array/vector/list of data when
   calling a plot, we pass the 'specification' to use instead.

.. the plots themselves should now iterate across the shared
   ride cache only plotting the items that pass the specification.

.. this should reduce memory usage and increase performance.
Migrate TreeMap to use RideCache

.. and therefore also using the Specification approach.
Migrate Histogram to use RideCache

.. and specification, but only when plotting a metric
   over a date range.
Histogram no longer slow

.. so we don't need a lag betweem metric selection
   and re-plotting.

.. this was/is only relevant to plotting metrics
Migrate TreeMap LTMPopup to use RideCache

.. the other half, LTMWindow using LTMPopup is now commented
   out and will need to be fixed when LTMWindow migrates to RideCache
Migrate LTMSidebar to use RideCache

.. just the summary widget basically.
Migrate DiarySidebar to use RideCache

.. in the month/week summary.
Migrate RideSummary (DateRange) to use RideCache

.. but compare mode still uses metricDB

.. and the code is still in need of tidy up
Migrate RideSummary (Compare) to use RideCache

.. ride summary window is now free of metricDB

PHEW!
CLucene is optional !

.. oops
LTM refresh during update

.. just playing with the concept, not neccessarily how
   things will pan out.

.. If you delete rideDB.json and start GC then switch
   to a PMC whilst the cache is being computed and look
   at all dates you will see the chart refresh as data
   arrives.
RideCache refresh in reverse

.. also uses a copy to avoid delete/insert issues when adding
   and deleting rides during a refresh

.. but still need to consider the delete operation and marking
   items as in process or something
Fix reverse sorting of RideItem*

.. qSort needed a greaterThan function that worked
   with pointers not objects, so now we really do
   refresh in reverse.
RideCache::refreshUpdate(QDate)

.. updated to now pass the date at which the update has
   got to. So charts on need to refresh if the data they
   need is prior.
Update Translation DE

.. update DE
Retire getAggregated + getBests

.. from SummaryMetrics
Rename SummaryBest to AthleteBest

.. and move to RideCache.h
Migrate LTM TimeofDay Curve to use RideCache

.. picking off the LTM charts piece by piece !
Merge pull request #1202 from Joern-R/translate

Update Translation DE
Migrate LTM Metric/Meta curve to use RideCache

.. seems ok, now need to address bests and compare