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

This supercedes #1530, and doesn't make me feel bad for writing shoddy code! 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).