SI-8525 Clarify usage of -Xlint:_,flag

Also clarify usage of -Xlint flag.

Align more with javac -Xlint:all,-flag,flag where once a flag is
explicitly enabled it cannot be disabled, but where the wildcard
is a backstop only. (There is no all option yet here.)

-Xlint and -Xlint:_ just set a flag which is consulted by any
unset lint warning.

Xlint warnings consult the state of Xlint when they are unset.

Individual -Ywarn-ings do not.

Other warnings are explicitly set to false. They can only be
enabled programmatically.

Some tests are corrected. Also, option order is no longer
significant, see the unit test.
SI-8525 Multichoice help

Enables -Xlint:help and -language:help.

The Settings API makes it difficult to innovate.
SI-8525 MultiChoice takes a helper function

Clean-up code review comments.

MultiChoice takes a helper function for outputting help text.
Merge pull request #3885 from som-snytt/issue/8525-cleanup

SI-8525 Clarify usage of -Xlint:_,flag
SI-8738  Regression in range equality

Missed the case of comparing a non-empty range to an empty one.  Fixed by checking nonEmpty/isEmpty on other collection.

Added a test to verify the behavior.
Merge pull request #3887 from Ichoran/issue/8738

SI-8738  Regression in range equality
SI-8736 Restore -language to former glory

MultiChoice allows -language to work like -Xlint.

The bug as described was that the setting value was set instead of updated
(++=) with additional flags.

The unreported bug was that `_` no longer set all settings.

The corrected behavior is that "contains" means "it was enabled, or
_ was set and it was not disabled explicitly."

That is the behavior of `-Xlint` but with a different mechanism,
since each lint option is a Setting.

A semantic difference is that -Xlint enables all the lint options,
but -language does not enable all the language features. `scalac -X` does
not explain this additional behavior of the `-Xlint` flag.

Also worth noting that `scalac -feature -language unused.scala` failed
in 2.11.1 but succeeds silently now.
SI-8736 Error if no arg and no default

Now `-language` with no option will emit an error:

```
$ skalac -feature -language unused.scala
scalac error: '-language' requires an option. See '-language:help'.
  scalac -help  gives more information
```
Merge pull request #3888 from som-snytt/issue/8736

SI-8736 Restore -language to former glory
SI-5691 lint warning when a type parameter shadows an existing type.

This adds a new lint warning for when a class/method/type-member's
type parameter shadows an existing type: `-Xlint:type-parameter-shadow`.

It excludes type parameters of synthetic methods (the user can't
rename or remove those anyway), like, apparently, a case class's
clone method (although I am not sure why they even need the type
parameter...).

Also fixes a test that contained wrong java sources (that didn't even
compile...), discovered thanks to the warning.