Stop using Default for initializing builtin lints

It wasn't a very appropriate use of the trait. Instead, just enumerate
unit structs and those with a `fn new()` separately.
Remove big indent in enum_variant_size_lint

Suggested viewing: git show -w
Use default PartialEq::ne for LintId
describe_lints: Address review comments
Run lint passes using the Option dance instead of RefCells
Use names in Lint structs in an ASCII-case-insensitive way

In preparation for the next commit.
Convert builtin lints to uppercase names for style consistency
Rework lint attr parsing and use it in middle::dead
Make lint::context private
Remove a HeapMemory lint FIXME

The proper, more general solution is to skip a lint pass entirely when all the
lints it could emit are Allow. That should probably be a ticket once this
lands.
Make lint::Context conform to rustc API conventions

It's really too early to be thinking about this as a separate "public" API.