The majority of the memory usage of the Cobertura plugin is currently in the
"paint" object. However, the "paint" object is only used during initial
publishing, not during subsequent trend change generation or metrics display.
This patch pulls the "paint" support out of CoverageResult into a subclass,
PaintedCoverageResult. The parser is modified to return the basic
CoverageResult by default, and adds methods to request a PaintedCoverageResult
(which are used by the publishers).
After this patch, the Cobertura plugin will still be slow when large coverage
files and/or lots of builds are in play, but it should throw OutOfMemoryErrors
on trend graph generation less commonly.