In case of miss, compile already preprocessed files.

TODO: make this feature optional, since seems in some cases it
slowdowns compilation.
First implementation of direct mode

In this mode we store list of includes in manifest file, to avoid
preprocessing in case of cache hit. We'll only re-hash all source files
and all includes in that case.
Allow disabling "single preprocessing" mode with CLCACHE_CPP2 env. var
Add workaround for source files with #line directives.

Such files may be generated by some code-generation tools.
Add support for CLCACHE_BASEDIR variable.

Need to allow cache hits in direct mode when compiling from different
directory.
Remove objects during manifest cleaning.

We'll be unable to access them after they're gone from manifest.
Add support for using Windows hard links instead of file copyings.

Controlled by CLCACHE_HARDLINK environment variable.
Fix nasty bug with not using file hash when computing object name.

Caused collisions when two files used the same set of includes.
Use cmd line when computing hash for obj files, not only for manifests.

Need to avoid conflicts when the same file is compiled with different
settings.
Properly increment misses counter.

We don't want to give up using it completely to allow backward
compatibility with statistics, generated by previous script versions.