implement the Or combinator for two chains
return None when any of the parse chain returns none

this way, the code:

    (parsec::str("a") >> parsec::str("a") |
     parsec::str("a") >> parsec::str("b"))
    .parse("ab")

works, because the first chain exits and another can execute from the
beginning.