Eliminate new/delete implementation.

Shadowing symbols from the standard library like that is a little
fragile.  Better to define our own allocator primitive and leave the
deallocator undefined (since it's an arena).

This pretty much worked out of the box, except for Rasterizer.

Rasterizer was following the usual C++ polymorphic destructor pattern.
Thing is, we don't actually delete Rasterizers, much less delete them
through a Rasterizer* rather than a derived type pointer.  So we don't
need a virtual destructor at all.

Which is good, because Rasterizer's generated destructor was calling
delete.  Like they do.

Unfortunately, the code no longer compiles on GCC 4.8.3 with
-Wnon-virtual-dtor.  This warning is pretty hamfisted, and it's not
clear that we can explain the logic above to it.  If this becomes
annoying I can add a pragma around the rasterizer types, but currently
I've just disabled the warning in my clients.