Only draw ruler ticks within the current clip region

In Java 8, items drawn outside the clip region were showing up overlapping
the numbers that should be shown. This should also be faster, since it's
doing less work.
store direct references to young/tenured/perm events

lazily instantiating the map saved about 10%; inlining the values we care
about saves roughly 30%.
don't create a new ExtendedType for every event

most ExtendedTypes wrap a Type without a custom name; they can all share
a single instance. ~20% saved.
draw date labels at round intervals

instead of round increments of an arbitrary start date. previously, if the
ruler started at 1:27:16, there would be ticks at 1:27:16 and 1:37:16.
with this change, there are ticks at 1:30:00 and 1:40:00.
merge pull request #109 (Only draw ruler ticks within the current clip region)
merge pull request #110 (Reduce memory consumption)
create and cache every ExtendedType on the fly