Improve how star rules are put together.

The main thing from here is that I need to fix 42.water.

I'm generally happy with the current approach to + and *, although
the parsed code in layer2 is now a bit more complex than I want it to
be. I'd like to think about how to make it more transparent.

I also realized that checking for tree is None to end a loop of parses
may not be the right thing - maybe we should instead check to see if
we've already parsed the entire string being parsed (which would have to
be different for streaming input, or for a live interpreter).