SI-4594 Enable mutating mutable multi settings

Previously, multi-valued settings (String- and Phase- valued) could be
augmented but not cleared.  Also, phase settings included lazily cached
values that were not recomputed when the setting was changed.
SI-4594 Repl settings command

A settings command for the rest of us.

The usual command line options are used, except that boolean flags
are enabled with +flag and disabled with -flag.

```
scala> :settings +deprecation

scala> new BigInt(java.math.BigInteger.TEN) { }
<console>:8: warning: inheritance from class BigInt in package math is deprecated: This class will me made final.
              new BigInt(java.math.BigInteger.TEN) { }
                  ^
res0: BigInt = 10

scala> :settings -deprecation

scala> new BigInt(java.math.BigInteger.TEN) { }
res1: BigInt = 10
```
Multivalue "colon" options can be reset by supplying no values
after the colon.  This behavior is different from the command line.

```
scala> 1 toString
warning: there were 1 feature warning(s); re-run with -feature for details
res0: String = 1

scala> :settings -language:postfixOps

scala> 1 toString
res1: String = 1

scala> :settings
-d = .
-encoding = UTF-8
-explaintypes = false
-language = List(postfixOps)
-nowarn = false

scala> :settings -language:

scala> :settings
-d = .
-encoding = UTF-8
-explaintypes = false
-language = List()
-nowarn = false
```
Merge pull request #2701 from som-snytt/issue/4594-repl-settings

SI-4594 Repl settings command