surface::show_text now takes a point to specify where to draw the text and returns a point that is the point where the next character would've been drawn if there had been a next character in the string, while also properly restoring the last path to the cairo context. Added a default path and current path to surface to aid in implementing that functionality. Added a comment to the throw helper in xio2dhelpers.h to explain what it throws for IntelliSense purposes.