Scaladoc class diagrams part 1

This commit contains model changes required for adding class diagrams
to scaladoc. It also contains an improved implicit shadowing
computation, which hides the shadowed implicitly inherited members
from the main view and gives instructions on how to access them.

This is joint work with Damien Obrist (@damienobrist) on supporting
diagram generation in scaladoc, as part of Damien's semester project
in the LAMP laborarory at EPFL.

The full history is located at:
https://github.com/damienobrist/scala/tree/feature/diagrams-dev

Commit summary:

 - diagrams model
   - diagram settings (Settings.scala, ScalaDoc.scala)
   - diagram model object (Entity.scala, Diagram.scala)
   - model: tracking direct superclasses and subclasses,
     implicit conversions from and to (ModelFactory.scala)
   - diagram object computation (DiagramFactory.scala, DocFactory.scala)
   - capacity to filter diagrams (CommentFactory.scala,
     DiagramDirectiveParser.scala)
   - diagram statistics object (DiagramStats.scala)
   - delayed link evaluation (Body.scala, Comment.scala)
   - tests

 - improved implicits shadowing information
   - model shadowing computation (ModelFactoryImplicitSupport.scala,
     Entity.scala)
   - html generation for shadowing information (Template.scala)
   - tests

Also fixes an issue reported by @dragos, where single-line comment
expansion would lead to the comment disappearing.

Review by @kzys, @pedrofurla.
Scaladoc class diagrams part 2

This commit contains the svg diagram generation using the graphviz
package, the template changes, the css styling and javascript code
that enables displaying and interacting with the diagrams.

The full history is located at:
https://github.com/damienobrist/scala/tree/feature/diagrams-dev

The diagrams are included as svg markup inside the html code. This
enables interacting with the image beyond what would be possible
with a static image (highlighting, scaling, tooltips, links to
nodes, etc).

The svg generation has four main phases: model => dot,
dot => svg (using the graphviz package), svg postprocessing,
inclusion in the html page.

This commit also fixes SI-5212 - links to individual pages
automatically load the left navigation panel of the website.

Commit summary:

 - diagram generation
   - model => dot (DotDiagramGenerator.scala, DiagramGenerator.scala)
   - dot => svg (DotRunner.scala)
   - svg post-processing (DotDiagramGenerator.scala)
   - svg inclusion in the html (Template.scala)

 - diagram interaction
   - css, js and image files

Review by @heathermiller, @kzys.
Documented SyncVar

Since we used it in the DocRunner and noticed it could have better
documentation.

Review by @heathermiller.
CPS: enable return expressions in CPS code if they are in tail position

Adds a stack of context trees to AnnotationChecker(s). Here, it is used to
enforce that adaptAnnotations will only adapt the annotation of a return
expression if the expected type is a CPS type.

The remove-tail-return transform is reasonably general, covering cases such as
try-catch-finally. Moreover, an error is thrown if, in a CPS method, a return
is encountered which is not in a tail position such that it will be removed
subsequently.
Remove stray comment
Remove unused type parameter.

There should probably be a warning about non-overriding methods
which have unreferenced type parameters.
Replace context stack of AnnotationChecker with new mode for typing returns
Remove unneeded use of Tree#id
exposes extra tests for symbols as discussed on reflection meeting

review by @odersky
Merge pull request #718 from damienobrist/feature/diagrams-dev-final

Diagrams in Scaladoc
Revert "Documented SyncVar"

This reverts commit 556065151c10685240dd907691dab5e094c87efc.
Revert "Scaladoc class diagrams part 2"

This reverts commit fba4098ca592bdd7d6609017daa4a08f274f35ec.
Revert "Scaladoc class diagrams part 1"

This reverts commit 831f09bb6d00c152bd8aef3ce8bf9e200080fe36.
fixes checkinit, now it's for real
Merge pull request #736 from damienobrist/feature/diagrams-dev-revert

Reverting the diagrams
Fix SI-4954.

Override inner classes in `LinkedHashMap` that correspond
to `filterKeys`, `mapValues` and `keys` to retain a proper
ordering of elements when they are transformed.
Adding copyInto and toVector methods to collections.

* Added generic copyInto method for collections.  For any collection with a CanBuildFrom, can convert a generic collection into it using the builder.
* Added specifici toVector method for collections.   This is more efficient than copyInto if the collection is a Vector.
Fixes from review.

* Fixed typo
* Renamed copyInto to copyTo
* Added tparam doc.
Use `ThreadLocalRandom` in `TrieMap.size`.
Merge pull request #725 from paulp/issue/arrayops

Remove unused type parameter.