Port lint checks from old API to new PSI based API

This CL rewrites all the Java source file detectors in lint to be
based on the PSI API instead of the Lombok and ResolvedNode APIs.

In several cases, I took the opportunity to revisit older lint checks
and implement them in a better way. For example, a handful of
detectors which performed their own simple flow analysis now use the
general evaluators (ConstantEvaluator, TypeEvaluator and a new
ResourceEvalutor) to perform flow analysis as well. In many cases this
led to the detectors being able to catch more bugs, so unit tests have
been updated with new golden files.

As another example, the CutPasteDetector now uses a smarter algorithm
(which should also avoid bugs like issue 174340.)

I performed some other cleanup as well, such as removing the appliesTo
and getSpeed methods which aren't used for anything anymore.

Change-Id: If7f25186f857c9de988b672e5bb065051b0fd54d
158 files changed