3D viewer: add PNG export funcionality

A button to export the current view as PNG image is added to the "Main" tab.
Merge branch '3dviewer-export'
Add Three.js SVGRenderer of r58
3D viewer: add SVG export
3D viewer: explicitely define bounding box edges

This makes the the Three.js update easier, because Face4 was removed.
3D viewer: explicitely define floor edges

This makes the Three.js update easier, because Face4 was removed.
SVG overlay: fix catch radius

Because the stroke of an SVG circle is centered along its radius, the
desired effective catch radius must be doubled. While this replicates
the previous effective catch radius of ~8, note that current values for
treenode cannot be made larger because of a Chrome bug:

https://code.google.com/p/chromium/issues/detail?id=239860

Thanks to Kathi Eichler for the bug report.
3D viewer: improve floor drawing performance

Using buffered geometry is much more efficient than using regular geometry.
Upgrade Three.js to r69

There were some changes in three.js that didn't make this update a
drop-in replacement. Hopefully, all of them are addressed in this
commit. This update is mainly done to have a working SVG renderer at
hand, which is needed for the SVG export of the 3D viewer.
Fix small problem with skeleton source select controls

It sporadically happened that the select control couldn't be
initialized. This usually happened to the 3D viewer and the problem
seems to be that the update code for these selects assumes, that there
is a selection already. This, however, is not always the case. Using the
first element as a fall-back fixes this problem for me.
3D viewer: replace last quads with triangles
3D viewer: update material assignment

From r58 to r59 setMaterial() was removed.
Merge branch '3dviewer-export-svg'
Doc: remove superfluous dot
Doc: add remark about SPDY to performance improvement section
Doc: add reference to performance tuning from installation instructions
Doc: fix malformed link target
3D viewer: fix broken controls when embedded in dialog

To make the controls work, the correct dimensions of the webgl DOM
element have to be available. This is done after a resize, but a resize
doesn't happen for a dialog. Therefore, controls are now initialized
after the renderer's DOM element has been added to the DOM. This makes
the container's size correct already when the controls are initialized.

Fixes #823.
SVG utils: add function to extract and replace styles of SVG elements
SVG utils: add function to add style CDATA section to SVG XML

This function can be used to add style sheets to an existing XML document. So
far it is only used by the dendogram.