Template extraction

This code simplifies our Document object because it no longer directly handles templates. It makes the actual template implementation a little more brittle though, because it just blasts a monkey-patch into Document.

I'm open to ideas on how to introduce extension points that would make this nicer, but for now I'm going to merge a squashed version of this patch into 0.14 to allow us to test for bugs that are a result of the extraction, and we'll deal with a more stable way of supporting templates in an external library in the coming weeks.

In other words, the purpose of this patch is to a) begin excising templates from Prawn, disabling them by default and b) to allow template users to test an experimental extension (they need to explictly require `prawn/templates`, but it should work).