create environment for fast visual feedback

The Vex Box View's purpose is to show a hard coded box structure. The
refresh button recreates the BoxWidget. This in conjunction with the hot
code replacement of the JVM allows to immediately see results of changes
in code, without the need to restart the runtime workbench.

Signed-off-by: Florian Thienel <florian@thienel.org>
basic RootBox

The RootBox is the root of the box model. It has a fixed width and it
expands in vertical direction. There are is no margin, padding, or any
visual representation of the root box.

Signed-off-by: Florian Thienel <florian@thienel.org>
vertical block

The VerticalBlock arranges children in one vertical column of given
width. It has a margin, a border, and a padding area, which reduce the
children's width. The height of the vertical block depends on the sum of
the height of its children.

Signed-off-by: Florian Thienel <florian@thienel.org>
root box is parent

Signed-off-by: Florian Thienel <florian@thienel.org>
horizontal bar is a simple visual box

Signed-off-by: Florian Thienel <florian@thienel.org>
simple layout

Signed-off-by: Florian Thienel <florian@thienel.org>
simple drawing

Signed-off-by: Florian Thienel <florian@thienel.org>
move performance measurement to BoxWidget

Signed-off-by: Florian Thienel <florian@thienel.org>
provide boundaries of IChildBox as Rectangle for convenience

Signed-off-by: Florian Thienel <florian@thienel.org>
delegate painting of child boxes to ChildBoxPainter

Signed-off-by: Florian Thienel <florian@thienel.org>
use tracing to protect against regression in box rendering 

Signed-off-by: Florian Thienel <florian@thienel.org>
cut off references to the box model as soon as BoxWidget is disposed

The box model can be rather big. Therefor we should cut references as
soon as the BoxWidget is disposed. Otherwise stale references within SWT
may lead to OutOfMemoryExceptions.

Signed-off-by: Florian Thienel <florian@thienel.org>
polish refresh action, use common refresh action

Signed-off-by: Florian Thienel <florian@thienel.org>
scroll vertically

Signed-off-by: Florian Thienel <florian@thienel.org>
use double buffering

Signed-off-by: Florian Thienel <florian@thienel.org>
optimize search for first visible box

Signed-off-by: Florian Thienel <florian@thienel.org>
use only one Graphics instance to prevent GC during painting

Signed-off-by: Florian Thienel <florian@thienel.org>
do not layout when the width is unchanged

Signed-off-by: Florian Thienel <florian@thienel.org>
use direct access instead of Iterable - it's way much faster!

Signed-off-by: Florian Thienel <florian@thienel.org>
fix failing trace test

Signed-off-by: Florian Thienel <florian@thienel.org>