WIP: centralize rule application in Grammar.

This is needed for left recursion handling.
Make Grammar#apply return a Call node.

This is probably necessary to support dynamically applying a rule that
is left recursive.
WIP: left recursion kind of works...

But the right semantic actions don't seem to be called.
Sketch out MatchResult interface
WIP ometa-js like rewrite
Random examples
Anything should modify @input.
Store remaining input in memo table
Throw :match_failed instead of returning nil
Added * and +, predicates, and the char rule
Throw out old peg.rb. Rewrite tests for new peg.rb
Add better assertions in the tests
Parser#match takes it's default from Parser.target
Fix _apply bug

Previously, Apply was sometimes missing a match on the first iteration.
It's no longer doing that.
Fix char rule