Start putting more information in the keys

When we generate a cache key, we need to be very specific about
specifying the input data that has to match.  Otherwise we will use
cached information when we shouldn't.

We start by increasing the amount of information about files that we
include in the key.
Tweak the hash algorithm we use

Instead of using sha512 directly, we are now using a hash
implementation that prepends the length of the data to the hash - so
that a collision would have to produce the same sha512 hash from the
same amount of data.  The chances of which should be ridculously
small.
Put timing output back in

For now we are measuring timing again - so put the necessary logging
flags back in.
Start breaking things up a bit

I don't like having everything in one library - so start by splitting
out the cache code to it's own package.  However, this means we also
need to break out Cerr to avoid a cicular dependancy.
Fix import tracking

Apparently I broke this at some point and didn't notice ...
Include information about binary in hash key

We can't reuse the hash across versions of the binary because we can't
assume that we would generate the same output from the same input.
Cache the file hashes

We now use the filename, size and mode flags as a key for the file
hash - we is what we use in the actual file key.
Just use the hash of the binary

We don't care if the filename, mode flags or size change - provided
that the hash remains the same (which it actually won't if the size
changes).
Get rid of some stuff we're not using

There is a bunch of config that we're not using anymore - so let's get
rid of it.
Remove more usused stuff
More unused stuff
Move config into Package

As part one of making the Config part of the cache keys, we make the
config available to the Package.
Pull config out of lib

In order to put Config into cache, we need to take it out of lib.
Dump timing output

Don't need this anymore.
Add config to the cache key

The config affects the generated output, so we need to include it in
the cache key (so that we get a different cache entry when the config
is different).