Parser can handle call expressions with method calls as an arg

This was a bit of a doozy. A nice takeaway from this is that parsing complex
(e.g.: made of multiple parts, like a class or method declaration) is now
different from parsing a simplex object (e.g.: the integer 5, or an array, or
something that is really just one token).

One huge downside is that the call expression parsing rules are a LOT more
finicky now. There's a lot of edge cases here that are being handled by a
lot of one-off rules for REFs that are the name of a method to call. Ultimately
this is going to need to match the ruby parser 1 : 1, so it would be nice to maybe
compare implementations at some point, but for now this is getting the rubyspec
a LOT further along.

As part of this, renamed the "whitespace" rule to "optional_whitespace" since
that's more accurate.