smurf: Add cache to calc_wvm

Add a simple AstKeyMap cache to the WVM calculation. Uses a single
keymap to store the results from previous WVM calculations. This
helps significantly with pathological WVM data that takes a long
time to process.

For example 20130701 #61 has some slow starting and ending values
that take 1000 times longer than normal to calculate. Since the
answer is recalculated in fix_metadata every time the file is
re-opened (and this seems to happen 4 or 5 times in a normal
run) you end up with some very serious slowdown. The cache
does not make the WVM calculation fast again but does make
it have less of an impact.

The cache only runs in the main thread and is not shared between
threads so the full time-series WVM calculation does not use
the cache at all. I'm not sure whether this is important. For
focus observations it may be better not to use threads at all
since there are only 5 WVM readings during a focus.