Add missing signature constraints for splitter.

As well as require bidirectional separator with length before assuming
retro(separator) and separator.length will work.

Without these additional constraints, splitter will cause unhelpful
compile errors about being unable instantiate find, when the separator
is a non-forward input range, or when it doesn't have length, or when
it's non-bidirectional. In the latter case, splitter should still work,
just that it won't export a bidirectional interface.