info: track start/end ele/temp better

quite often first/last chunk in recordings don't hold proper values.

This diff makes the info filter find/remember the first/last valid value
for temp and ele.
info: ascent/descent calculation, remove incline

"incline" was misnamed and is officially deprecated (but still working).

Instead please use "ascent". descent is now calculated, too.
Pwx: cope with bad timestamps

if delta of subsequent timestamps was too small, files failed to open due
to consistency checks.

Instead we're now ignoring chunks when no time elapsed.
Info: hack for ignoring bad elevation

ignore unrealistic elevation. This is a hack as it should be done in a
different filter.
SRM: stop setting default note when writing

old SRM file formats didn't have explicit space for storing the
temperature. Instead srmwin put the average temperature into the file's
note. This isn't needed with SRM7 or later files.

To avoid confustion (a note showing up without being set by the user) we
stop replacing an empty note with the average temperature.
SRM: handle invalid elevation

apparently elevations above 65000 are used by SRM to indicate "no value".

Although bad user calibration of pressure sensor may cause such values,
this is too rare. So, we're taking everything above 65000 as "no value".

This way we're loosing the chance to read + fix the elevation data for
such bad miscalibrations.
Pwx: fix parsing timezones

regular expression to parse timezones was wrong and aborted the import of
files.
Pwx: avoid division by zero

check for nonzero speed failed when it was specified as float.

Thanks to Nils for sharing the example.
Fit: strictly prefer distance over speed

Fit parser can take the distance from 3 different FIT fields: distance,
speed and packed speed+distance.

In correct files it was properly prefering distance input over speed - but
files with samples that have no change in distance but still report a
speed did use the speed to calculate the distance.
Fit: read energy expediture, aswell

added hack to read energy expediture that was guessed based on heart rate.
Hopefully this will be replaced with a more scalable aproach in the
future (that also copes with summary-only HRM files).
marker/timespan: fix finding end chunk

timespan didn't return last chunk when requested span ended within a chunk.
This resulted in marker info providing wrong data.
Fit/Timespan: fixed fix for bad lap times

fit timestamps (i.e. for lap start/end) are with 1sec precission - but
laps might start at *any* time.

As a result the actual timestamps might be off by up to 1sec due to lack
of precission.

Laps also have the lap_elapsed_time - which is stored in msec. I'm now
calculating the lap start based on the lap end timestamp + elapsed time.
This gets the lap duration fixed - but the absolut start/end time still
has jitter due to lack of precision.
Fit: parse more details of start/stop events
Fit: parse device messages
Fit: use lap start time instead of end

some files I checked had bogus end times in Laps - while the start times
were fine. So I changed the code to caluclate the end time (and not the
start time)
Fit: debug-log more unhandled message details
Info: provide total recorded time

... and use this for correct calculation of average chunk duration.
Fit: refactored chunk start calculation

lost track how chnuk start is actually calculated - refactored it and took
more corner cases into consideration.
Store: removed unused cap_note
removed obsolete Memory store