Character set combinator

This was initially going to be a general-purpose contained-in combinator until I realized how obnoxious it would be to handle both sets and character sets given their lack of a common interface. Bleah.

Fixes #16.