Optimisation: memoize calls to `version`.
Optimisation: memoize calls to `version`.

The `version` function is quite expensive because it has to discover and hash
all the CAmkES source files. The purpose of this calculation is to ensure an
automatic version bump on each commit to CAmkES, such that the compilation
cache never retrieves stale code. Having said that, the version is not expected
to change *during* the execution of CAmkES, so we can safely memoize it.

This change has been present in 'development' for some time and must have
previously been missed in a merge to 'master.'

agacek/camkes-tool,agacek/camkes-tool,smaccm/camkes-tool,agacek/camkes-tool,smaccm/camkes-tool,smaccm/camkes-tool,smaccm/camkes-tool