fixed bug in canvas and got buffer tested & fixd

gfxbuffer still needs more thorough testing, but it generally seems to
work with adding, merging, and splitting spans for all cases I could
think of off the top of my head.