SI-6728 Fixes crash in parser on incomplete for expression

The parser was trying to take the position of an empty expression
which would crash. Son on the empty expression case in TreeBuilder#
makeWhile it tries to do that and, if that failed, gets a position
that wraps both the condition and the body.

I also made a slight improvement to the UnsupportedOperationEx
messages in Position.
SI-6669 Add . to the default scalap classpath

The default classpath for scalap did not include '.' which made it
behave differently from javap in an annoying way. This commit adds
it to the default. Also included is a test to make sure it's in
the default but does not corrupt a user specified classpath.
Merge pull request #2028 from JamesIry/2.10.x_SI-6728

SI-6728 Fixes crash in parser on incomplete for expression
Merge pull request #2031 from JamesIry/2.10.x_SI-6669

SI-6669 Add . to the default scalap classpath
Merge pull request #1989 from adriaanm/rework-pr-1945

SI-6968 Simple Tuple patterns aren't irrefutable
bytecode diffing support in ByteCodeTest

use sameByteCode(methodNode1, methodNode2) to check methods
compile to identical bytecode (line number info is not taken into account)
support testing bytecode similarity in ByteCodeTest

one similarity measure comes free of charge: it ignores which variable
is stored/loaded, everything else must be identical

like this: `similarBytecode(methNodeA, methNodeB, equalsModuloVar)`

also implemented prettier diffing
refactor: prepare null check redundancy analysis

this commit doesn't change any behavior
no null check for type-tested unapply arg

pattern matching on case classes where pattern
is not known to be a subclass of the unapply's argument type
used to result in code like:

```
if (x1.isInstanceOf[Foo]) {
  val x2 = x1.asInstanceOf[Foo]
  if (x2 != null) { // redundant
    ...
  }
}
```

this wastes byte code on the redundant null check
with this patch, when previous type tests imply
the variable cannot be null, there's no null check
don't store subpats bound to underscore

also, tweak fix in place for SI-5158 to appease SI-6941
don't store mutable fields from scala.* as we can assume
these classes are well-behaved and do not mutate their
case class fields
no type test if static type <:< primitive value class
SI-6686 drop valdef unused in flatMapCond's block
SI-6941 tests

tests that the methods' bytecodes are similar
as variable load/stores are reordered, it ignores which variables
are modified when checking for bytecode equality

the assert is: `similarBytecode(methNodeA, methNodeB, equalsModuloVar)`