Cache results of read_ast call

In order to speed up linting a project, we can cache the results of
read_ast between calls. In a real world repo that reads over 800 files,
that change more than halves the time (50s vs 2:15).

The test suite also gets a nice boost as a result.
Use LRU cache for read_ast

Using an LRU cache keeps memory usage from growing too much. Performance
is roughly the same with just holding the 5 most recent files in memory.
Merge remote-tracking branch 'dougbarth/ast_cache'