Initial prototype of caching parsed source code.

At the moment the cache is just saved to .cache/ in current dir.

The parsed data is serialized into binary format using Marshal,
which correctly preserves all the data types and is additionally
really fast.

Refs #446
Add --[no-]cache and --cache-dir options.

By default the caching is disabled.  When turned on with --cache,
the caching dir will be <output-dir>/.cache/ unless overridden
with --cache-dir option.

Previously the whole output dir got cleaned up, but now it can
contain a .cache dir, which we'll want to preserve.  So I created
OutputDir class to take care of output directory cleanup in a way
that preserves the .cache/ directory inside it.

Refs #446
Clean up unused files from .cache directory.

We remember each cache entry that was read or written during the
current jsduck run.  All others get deleted.  This ensures the .cache
directory doesn't grow over time.

Refs #446
Invalidate cache when files are renamed.

Take the file name also into account when calculating the MD5 hash
of a cache entry.  Otherwise files that are renamed would also be
read from cache, resulting in the old filename being referenced in
the docs and also in the warning messages.

Refs #446
Invalidate cache generated by different Ruby/JSDuck version.

Marshal dump format can change between Ruby versions and although
the Marshal has its own version numbers, I get an encoding error
when reading the Ruby 1.8 Marshal dump with Ruby 1.9.

The parsed source code data structure can also change between
versions of JSDuck.

To eliminate these problems, a .cache/manifest.txt file is created
with the contents like:

    Ruby: 1.9.3, JSDuck: 5.2.0

The file is then checked to match the current version of Ruby and
JSDuck.  If the versions don't match, the whole cache is invalidated
(all files removed from it).

Refs #446
Additional documentation of caching.

Refs #446
Merge branch 'cache'