Move lint.rs out of middle

We're going to have more modules under lint, and the paths get unwieldy. We
also plan to have lints run at multiple points in the compilation pipeline.
Move lint infrastructure and individual lints into separate files
Rename lint::Lint to lint::LintId

So that we can introduce a trait named Lint.
Eliminate glob import in lint::builtin
Implement a Lint trait and port one lint to it
Port more lints to the trait infrastructure