Integrate TextPainter into Bubble

There was a lot of duplicated logic between ```Bubble``` and ```TextPainter```. @sesteel and I worked through a lot of API improvements in both ```Bubble``` and ```TextPainter```. This will close #52.