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.