Allow passing of args to lint from lint_package
Implement caching

This is a major overhaul of the package to operate on top level
expressions rather than whole files.  This allows us to cache based on
expression content, so we don't have to lint expressions that have not
changed.

closes #21, #22