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
Improve --export option docs.

Refs #450
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'
Create new Performance group of command line options.

Grouping the --processes, --cache and --cache dir inside it.
Fix /bin/compare to work with JSDuck 5 export format.
Implement @experimental tag.

Placed it in the same group with @deprecated and @removed, so one
can also add a version number (since when the feature was added),
and a comment:

    @experimental 3.2 To try out new Google API.

Tweaked the styles of @deprecated and @removed too, so they all look
a bit better.  To allow for different message text in @experimental,
had to introduce @msg and @since instance variables to the DeprecatedTag
base class.

Fixes #239
Add Wikimedia projects to Who's using JSDuck list.
Update README.md
Merge pull request #459 from lacivert/patch-1

Fix typo in README.md
Up version to 5.3.0.
Add smoke test to check that JSDuck doesn't crash.

A simple check that running jsduck --version results in 0 exit code.
Fix trailing comma crash with Ruby 1.8.

Fixes #460
Up version to 5.3.1.
Ensure rubygems is loaded before loading 'parallel'.

That's more of a debugging commit to see if this helps to make our
TravisCI build pass.
Require rubygems inside the smoke test instead.

Drop the statement from JSDuck code itself.