Split text rendering part of pal into its own class, QgsTextRenderer

This supercedes #1543. I've split all the actual text rendering parts of QgsPalLabeling off into their own class, QgsTextRenderer. This allows for other parts of the code base to draw text using all the nice formatting options currently locked up in QgsPalLabeling, and is especially useful for composer (eg, drawing map grid annotations with buffers, shadows, etc). The Label settings dialog has been split off into a reusable widget too.