Pluggable parsers

As originally worked on in PR 354 I merged master into that branch ( making the branch itself mergable ) and pushed it up to a topic branch for everybody to easily work off.

The specs currently pass but with talking to @sandal we where discussing renaming the Parser class to something similar to `Prawn::TextFormatter::BasicHTML` and changing the `::to_array` method to `::format` as it's more intention revealing.

Unless someone disagrees with that name I'll go ahead and make the changes to the class/specs. Unlike the image handlers I don't think we need to register all our parsers and if the user want's to use an alternative parser they can pass the option as the original PR provided, possibly changing the argument name from `parser:` to `formatter:`

Thoughts?

/cc @cs