Add low-level title casing support
Add a toTitle function

This fixes gh-38.