Support for text-transform

This is 1-1 locale-unaware text transform using std::ctype.
If we want a transform that cares for things like ß -> SS,
we need to switch to boost::locale.