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
test suite for SI-6329
SI-6356 reflection now supports Java annotations

Except for one thingie: java enums are currently not understood
by Scala reflection, hence they aren't yet supported in annotations.
SI-4478 Replaces wrt with (hopefully) slightly improved wording.
More relative path elimination.

Some names I missed in 55b609458fd .

How one might know when one is done:

  mkdir scratch && cd scratch
  mkdir annotation beans collection compat concurrent io \
    math parallel ref reflect runtime scala sys testing \
    text tools util xml
  scalac $(find ../src/library -name '*.scala')

Until recently that would fail with about a billion errors. When it
compiles, that's when you're done.  And that's where this commit
takes us, for src/library at least.
SI-6356 reflection now supports Java annotations

Except for one thingie: java enums are currently not understood
by Scala reflection, hence they aren't yet supported in annotations.
Reworking of annotation arg parser.

Paradoxically it has less duplication but is longer.
That's the way it goes sometimes.
Merge pull request #1314 from paulp/pullreq-1306

Pullreq 1306
SI-6336 Disallows value types in structuralal refinements

Structural refinements already have a number of restrictions, e.g. cannot refer to
type parameters of enclosing classes. We need to disallow value classes as well.
Merge commit 'refs/pull/1306/head' into 2.10.x

* commit 'refs/pull/1306/head':
  SI-6356 reflection now supports Java annotations
Merge pull request #1319 from paulp/eugene-pullreq-1306

Eugene pullreq 1306
moves isImplicit from TermSymbol to Symbol

Because classes can also be implicit.
Merge pull request #1310 from scalamacros/ticket/6329

test suite for SI-6329
Fixed SI-6353: applyDynamic with sugared applications

- Accept sugared applications such as x(1) if x implements Dynamic,
  so x(1) gets re-written to x.apply(1).
- When picking a dynamic rewrite for x.apply(1), favor applyDynamic
  instead of the default selectDynamic.
Merge pull request #1309 from paulp/210-no-relative-paths

More relative path elimination.
Moved constant empty arrays into Array companion.

This reminds me of at least one reason I didn't put them
here before: I don't feel like I can return these from calls
to Array.empty, because there's no way of knowing whether
anyone has been relying upon this property:

  scala> Array.empty[Byte] eq Array.empty[Byte]
  res0: Boolean = false

Since that is exactly the property I need to alter.
The test above is true in all the "real" collections,
which is all the more reason to be concerned that someone
might be using empty arrays as not-equivalent sentinels.

I can still move them here, but it'd be a lot better if
array creation could use them - not only def empty but

  def apply[T: ClassTag](xs: T*): Array[T]

which probably creates millions of empty arrays where
one would do in almost every case.
Revert "Added constant empty array to the companion objects."

This reverts most of commit 9d84e89d2 .
Merge pull request #1308 from soc/SI-4478

SI-4478 Replaces wrt with (hopefully) slightly improved wording.
Merge pull request #1318 from odersky/ticket/6336

SI-6336 Disallows value types in structuralal refinements