More streaming decoding combinators
Factored out some duplication - defined variations in terms of generic attempt/nonEmpty combinators