Create an abstract revision plotting implementation
This is a rough implementation of a commit graph visualizer library
that can be used on any type of display. The basic PlotWalk, PlotLane
PlotCommit and PlotCommitList can be used to schedule commits into
different lanes based on how the graph is connected, and connect the
commits in both directions through common PlotLane instances. This is
enough of a layout to support any display device, text or graphical.
The AbstractPlotRenderer provides graphical drawing support from these
objects, but is geared to a pixel based display device. Implementers
must provide concrete drawing primitives based on the actual type of UI
they want to render onto. We don't use AWT directly here as we also
want to support SWT from the same code.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>