SI-5767 fix + small HashSet/HashMap fixes

- `LinkedHashSet` implementation moved from `FlatHashTable` to `HashTable`
   - `remove` time reduced from O(n) to O(1)
   - `diff` time reduced from O(n^2) to O(n)
- A bit of refactoring in `HashTable` serialization code
- Putting an element into hash map now avoids double hash code/hash index
  calculation (see `HashTable#findOrAddEntry`)
- bugfix: compiler/LambdaLift occasionally breaks LinkedHashSet integrity
Making public methods of FlatHashTable protected

As discussed in https://groups.google.com/forum/?pli=1#!topic/scala-internals/1yABM30POS0
SI-6374 Scala reflection now supports Java CRTP

Translation of Java types to Scala types has previously been
existentionalizing raw types of ParameterizedType arguments.

As shown in https://issues.scala-lang.org/browse/SI-6374
this leads to cyclic reference errors. If you wonder about the
mechanism of the error, take a look at the comments to the
aforementioned issue - there's a detailed explanation.

However calling rawToExistential is completely unnecessary, because
existential parameters of the results are immediately discarded,
and only prefix and symbol are used later on (which means that
existential extrapolation performed by rawToExistential also doesn't
after the result).

Finding out this was tough, but the rest was a piece of cake.
Getting rid of the call to rawToExistential when translating ParameterizedType
fixed the problem.
Reflection no longer produces faux existentials

Because of using plain ExistentialType factory of a case class
typeToScala sometimes returned existentials with empty quantifieds.

Changing ExistentialType to newExistentialType, which simply returns
the underlying types if params are empty, fixed the problem.
SI-6374 Reflection now works for anns with enum fields

Enum members are static and, therefore, they need to be looked up in
classSymbol(<enum>).companionModule, rather than in classSymbol(<enum>).
refactors java reflection tests

All javac-produced artifacts are now placed into test/files/lib
Revert "Fix SI-6294."

This reverts commit cb393fcbe35d0a871f23189d791b44be1b826ed2.

Conflicts:

	src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
Revert "Fix SI-4581."

This reverts commit 373f22a2022519ab894c1ea77460e6460d7c2ee4.
Revert "Fixes SI-6236."

This reverts commit faa114e2fb6003031efa2cdd56a32a3c44aa71fb.
Revert "Fixes SI-6189."

This reverts commit 5a8dfad583b825158cf0abdae5d73a4a7f8cd997.

Conflicts:

	src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
Revert "WIP add private/lazy checks and a few tests."

This reverts commit 227239018b38ab7218ee6b30493c9c8e1836c8c9.
Revert "Implement @static annotation on singleton object fields."

This reverts commit 892ee3df93a10ffe24fb11b37ad7c3a9cb93d5de with
exception of keeping `@static` annotation in the library so we
can deploy a new starr that does not depend on it before removing
it completely.

Conflicts:

	src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
	src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
	src/compiler/scala/tools/nsc/transform/CleanUp.scala
SI-6287 fixes synthetic symbol clashes in toolbox

Apparently synthetic classes like $anonfun$1 have two properties:
1) Their names are generated using a counter unique to a compilation unit
2) After flatten they levitate to the nearest enclosing package

As a result if we use an empty package to wrap toolbox codegen,
then this package will soon be overflown by $anonfun$1 symbols, because:
1) New codegen session = new compilation unit = new counter which starts at 0
2) New codegen session = new anon funs that end up as children of empty package

Creating a freshly named package for each codegen session fixed the problem.
Now anonfuns from different sessions end up with different parents.
pull request feedback
improved reflection documentation
New starr that does not depend on `@static`.

Deployed a new starr that does not depend on `@static` annotation.
The next step will be deleting `@static` from the library
altogether.
Remove `@static` annotation from the library.

It's a follow-up commit on 4bfcadabae7663e4329f5a4b21a9368477a7e3e3.
clarify caveats of App trait
Merge pull request #1340 from gkossakowski/revert-static-annotation

Revert `@static` annotation
Merge pull request #1298 from pavelpavlov/SI-5767

SI-5767 fix + protecting public FlatHashMap API