move to ConsLists for efficiency:

 - profiling showed that most of the time was being spent in the 'item' parser combinator

 - I interpreted this to mean that first/rest slicing is the bottleneck, and that it may not be O(1)

 - ConsLists support efficient first/rest slicing