Fix overlapping overloads of monad's operator<<.
Gave anonymous implementation namespaces names.

Reason: Different TUs would lead to separate type instantiations. That
is, either's tag, for instance, would not be a single type, it'd be one
per TU that includes either.
Cleaned and expanded upon parsec clone example.