Complete parser module

This module uses Noparse exception for backtracking. It will be
eliminated when we use FParsec, so we leave it for now.
Make mapfilter an alias of List.choose