SI-5905 Clarify test case

The language feature options are discovered reflectively, but it
is nice to enforce that expected options are supplied.

Short of that, the code string includes a rowdy postfix operator.

It still does enforce that at least one option was discovered.
SI-8631 Treat `A with Sealed` as enumerable for pattern matching

Enumerate the subtypes of sealed parent types of refinement
types, and filter those that conform to the refinement type.

Such types can crop up easily when LUB-bing case classes which
add `Product with Serializable` to the mix.
Merge pull request #3777 from som-snytt/issue/5905-test

SI-5905 Clarify test case
Refactor `enumerateSubtypes`

  - reorder to make "unenumerable" the last case
  - reunite an orphaned comment with its loved ones.
SI-8611 Avoid accidental patmat unification with refinement types

In the enclosed test, t8611a.scala, the patterns `O.{A, B}` were
incorrect treated as equivelent by the combination of
`uniqueTpForTree` and `Const.uniqueTpForTree`.

`uniqueTpForTree` used `Type#narrow` to try to create a distinct
type for each new pattern tree it encountered. However, narrowing a
`RefinedType` does not create a distinct type as we are used to
when narrowing, e.g. a class type.

    // Type
    def narrow: Type =
      if (phase.erasedTypes) this
      else {
        val cowner = commonOwner(this)
        refinedType(this :: Nil, cowner, EmptyScope, cowner.pos).narrow
      }

    // CompoundType
    override def narrow: Type = typeSymbol.thisType

This commit creates a fresh existential type symbol rather than
trying to use `narrow`.

I've included a unit test to show the sublteties of narrowing
refinment types.
Remove now-redundant condition in sealedness checking

It arrived in c1f8dbc, but is no longer needed after user-defined
value classes were introduced in 2.10.0.
Merge pull request #3781 from retronym/topic/8611

SI-8611 Avoid accidental patmat unification with refinement types
Merge pull request #3797 from retronym/topic/exhaust-compound

SI-8631 Treat `A with Sealed` as enumerable for pattern matching
SI-8672 Better end-of-sentence detection for Scaladoc

The first sentence of a Scaladoc comment is parsed as the summary.
However, this was breaking of the sentence at the first `.`, even
if that was immediately followed by another character.

This commit only considers a period followed by whitespace, EOL or
EOF as the end of a sentence.
Merge pull request #3824 from retronym/ticket/8672

SI-8672 Better end-of-sentence detection for Scaladoc
SI-8657 don't miss tailrec defs in more positions

1) First operand of boolean expression using `&&` or `||`. Second operands of
   those boolean exprs were already treated specially here but handling for first
   operands was missing.
2) Condition of `If`. Also added a test for guards.