SI-8325 Spec accepts infix type *

Remove the clause in 3.2.8 that reserves `*` as a postfix
modifier thing.  For emphasis, the language that an infix
type name can be an arbitrary identifier is retained, sans buts.
SI-8578 Avoid fresh name clashes under -Ydelambdafy:method

It is important to append the fresh 'N' after '$'. Otherwise, we
find out the hard way that ("foo$11" + "1") == ("foo$1" + "11").
SI-8578 Avoid another potential fresh name clash

No test case for this one, but see the preceding commit for
the class of bug that I'm trying to avoid.
Merge pull request #3722 from som-snytt/issue/8325-spec-update

Issue/8325 spec update
Merge pull request #3742 from retronym/topic/8578

SI-8578 Avoid fresh name clashes under -Ydelambdafy:method
SI-8582 Pending test for InnerClasses bug in GenBCode

As seen in a runtime reflection failure in Slick during a GenBCode
enabled run of our beloved Community Build.
Merge pull request #3744 from retronym/ticket/8582

SI-8582 Pending test for InnerClasses bug in GenBCode
SI-8507 Avoid lazy val in StringContext

This mild refactor eliminates the lazy val StringBuilder
and arguably makes the code easier to read.

There is a small unit test but no benchmark to prove
anything useful about performance. The ticket notes
contention due to lazy implementation.
Allow tracing methods and classes in GenBCode
Fix BeanInfo generation for GenBCode
SI-8582 emit InnerClasses attribute in GenBCode

I removed the `-bcode` test since we have a build that passes
`-Ybackend:GenBCode` to all tests.

Short intro do the [`InnerClass` attribute][1]:

  - A class needs one `InnerClass` attribute for each of its nested
    classes

  - A class needs the `InnerClass` attribute for all (nested) classes
    that are mentioned in its constant pool

The attribute for a nested class `A$B$C` consists of the long name of
the outer class `A$B`, the short name of the inner class `C`, and
an access flag set describig the visibility.

The attribute seems to be used for reflection.

[1]: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.6
Move t8582 to test/files/jvm
Merge pull request #3745 from lrytz/t8582

SI-8582 emit InnerClasses attribute in GenBCode
SI-8587 Explicitly document forall/exists for empty collections

This behaviour isn't always intuitive for newcomers.

Also changes inadvertant doc comment to an impl. comment.
SI-8591 Scaladoc: Problem with scrolling under Safari on iOS
SI-8574 Copy @SerialVersionUID, etc, to specialized subclasses

The test case demonstrates that this is important for serialization
and for strictfp. (Although the latter is still pretty broken,
see SI-7954.)

Now that the synthetic subclass of `Tuple2[Int, Int]` also has the
`@deprecatedInheritance` annotation, I had to change the spot that
issues this warning to be silent after the typer phase. Otherwise,
we get two warnings in `run/t3888.scala`. This also remedies double
warnings that were incurred in `neg/t6162-inheritance`.
Merge pull request #3738 from retronym/ticket/8574

SI-8574 Copy @SerialVersionUID, etc, to specialized subclasses
SI-8601 Don't treat int/long division, or arraylength, as dead-code

`{i, l}div` and `{i, l}rem` throw an `ArithmeticException` if the
divisor is 0.

`arraylength` throws a `NullPointerException` on a null reference.

JVM Spec:
> The only integer operations that can throw an exception are the
> integer divide instructions (idiv and ldiv) and the integer
> remainder instructions (irem and lrem), which throw an
> ArithmeticException if the divisor is zero.

> The Java virtual machine's floating-point operators do not throw
> runtime exceptions

> If the arrayref is null, the arraylength instruction throws a
> NullPointerException.

I checked the other primitives in `ICode` to see if anything else
should be considered as live code.

Pure:

	  // jvm  : {i, l, f, d}neg
	  case class Negation(kind: TypeKind) extends Primitive
	  // jvm  : if{eq, ne, lt, ge, le, gt}, if{null, nonnull}
	  //        if_icmp{eq, ne, lt, ge, le, gt}, if_acmp{eq,ne}
	  case class Test(op: TestOp, kind: TypeKind,  zero: Boolean)  extends Primitive
	  // jvm  : lcmp, {f, d}cmp{l, g}
	  case class Comparison(op: ComparisonOp, kind: TypeKind) extends Primitive

Impure: {i, l}{div, rem}, otherwise pure

	  // jvm  : {i, l, f, d}{add, sub, mul, div, rem}
	  case class Arithmetic(op: ArithmeticOp, kind: TypeKind) extends Primitive

Pure (overflow is silent, NaN.toInt is defined):
	  // jvm  : {i, l}{and, or, xor}
	  case class Logical(op: LogicalOp, kind: TypeKind) extends Primitive

	  // jvm  : {i, l}{shl, ushl, shr}
	  case class Shift(op: ShiftOp, kind: TypeKind) extends Primitive

	  // jvm  : i2{l, f, d}, l2{i, f, d}, f2{i, l, d}, d2{i, l, f}, i2{b, c, s}
	  case class Conversion(src: TypeKind, dst: TypeKind) extends Primitive

Impure! May NPE!

	  // jvm  : arraylength
	  case class ArrayLength(kind: TypeKind) extends Primitive

Pure (we know that StringBuilder.{<init>, append, toString} are pure
and `append` is null safe.)

	  // jvm  : It should call the appropiate 'append' method on StringBuffer
	  case class StringConcat(el: TypeKind) extends Primitive

	  // jvm:  it should create a new StringBuffer
	  case object StartConcat extends Primitive

      // jvm:  convert StringBuffer to a String
	  case object EndConcat extends Primitive
SI-8601 Avoid over-eager optimization of LOAD_FIELD

It can NPE or trigger static class initilization, we can't elimiate
it without changing semantics.
Add a test for array load