Caching of external ASTs and comments.

This commit introduces a new feature in ruby-lint: caching of external ASTs and
the associated comments.

Before this commit ruby-lint would process any externally required files over
and over again on every run, even if they never changed. This commit introduces
the ability to cache the resulting ASTs and the comments associated with
particular nodes (e.g. method definitions).

Cache files are stored in PWD/.ruby-lint though this directory can be changed
by setting the `cache_directory` option. Cache files are encoded using Marshal
and compressed using Zlib. Cache files are invalidated whenever the file
modification times of a single cached file change.

The performance of ruby-lint is drastically improved using this new setup. To
measure this the virtual_machine.rb file was analyzed 100 times with both
caching enabled and disabled. As shown in image [1] the execution time drops
from around 1120 ms to around 420, it's also much more consistent than before.

This commit fixes #49.

[1]: http://downloads.yorickpeterse.com/images/screenshot_080913_16%3a33%3a38.png
Merge branch 'caching'