Improve streaming parsers

On my (arguably quite small) examples, these two patches improve performances by around 30% to 50%.

Also, Gen is much nicer to use than Stream and some part of the code could be improved using standard function, if you choose to accept this patch.

I don't have pretty numbers, because

  1) I don't have big enough datasets.
  2) Benchmarking process where IO plays a big role is messy.