Support streaming input

We aren't quite there yet though:

  * New choices impose an O(n²) perfomance hit

  * Every append rewinds the search