Initial checkin of lab 5

A "solution" for lab 5 that implements a "recursive descent" "iterative"
parser, but really just abuses Python's __iter__() and __next__()
primatives.  It's awful, awful, awful (ideally, since I'm searching for
a sequence that's literally three integers incremented by 1, what would
be good would be to have a reduce that simply sets the identity of
accumulator to the last-matched value (or an index of "How many values
matched" starting from 0 or 1), but of course your average reduce isn't
going to break out of the list consumption loop upon success.  So, this
is awful, and could be done better imperatively, object-orientedly or
even functionally if I had the chops, but it is *not* ideal here (or
likely to be ideal in any other language that can expose sequences as
iterable "identities" whose successive member is consumed upon
evaluation of a black-box closure).  I could try to play with something
that would behave similarly and be more "ideal" from within the context
of Python, but this cannot (*cannot*) be the right way to do things.