Add support for NFC and NFKC

This adds a new `Recompositions` iterator, which performs canonical composition on the result of the `Decompositions` iterator (which is canonical or compatibility decomposition). In effect this implements Unicode normalization forms C and KC.
@sfackler That is a good catch. Can you elaborate a bit on the "depending on how large this is expected to get" part? My instinct is that for a push/shift access pattern a `RingBuf` would always be better, or equivalent to a `Vec`, but maybe I'm missing an edge case.
This is expected to be small, often only a single `char`, for "normal" strings  I'd expect at most 2-4 `char`s. If one were to craft a string this could grow up to the input string's `char_len()` though.