DataFilter update for formulas

Will now allow users to specify a formula using
the * / + - ^ operators. This can be used to specify
values (e.g. TSS > 100*2) or to calculate a totally
new user metric (e.g. Average_Heart_Rate / RPE).

Also added two functions as well;

1. best (series, duration)   which returns the best value
                             for the series of the given
                             duration in seconds.

                             Where series is one of; power,
                             hr, cadence, speed, torque,
                             xpower, np.

2. tiz (series, zone)        which returns the time spent
                             in the given series and zone
                             Where series is either power
                             or hr and zone is 1-10.

NOTE:

We know need to add the functions for retrieving the best and
tiz values from the ridefilecache without having to read the
entire file (ie. read the header and use lseek).
Forgot wpk
A lot less assert

There still some assert left in the code, but removed
a fair number of the examples where, its just as easy
to handle the condition gracefully, without crashing.

By 3.1 we will have eradicated assert from the code.
Fix segv on filter '(NP)'

Fixes the crash but the eval code is a bit of a
fuck up. It was evaluating children instead of
using recursion, and now we have lots more types
and expressions its all a bit of a mess.

Will need to rewrite to use recursion and it will
be a lot simpler!
Fast Best and TIZ queries

Added static functions to ridefilecache
to get best and tiz values for series and duration
or zones and glued them in to the datafilter code
recently added.

It uses seek (via QDataStream::skipRawData) and is
quite fast on my Linux development PC.

We now need to update the LTM settings dialogs to
the new mockups so we can plot custom durations for
peak power / NP etc too.

NOTE: Not tried on Windows / Mac, so may not be quite
      so fast there, will need to check.

      To try this out, in the search filter box type:

            best(power, 3600) > 250

      to filter only those rides where the best hour
      power is greater than 250 watts. It should
      return almost instantly.
Slightly larger SearchBox

.. since it was 'just' too small for a typical query.
Best and TIZ shouldn't buffer

.. they have one read operation beyond the header
   and will not need to buffer -- the O/S will buffer
   file blocks too, lets not duplicate.
Fixup ridefilecache best decimals

.. forgot that the values are converted to
   zero decimals when stored.

This fixes strange results when filtering by
wpk or speed, or any series that has decimal
places.
Animate Activity List collapse/expand

.. its standard Qt, and is kinda cool.
Added collapse/expand to analysis sidebar

.. to collapse/expand for whatever is grouped by.