Add support for trailing commas in more places

This lets the parser understand trailing commas in method calls, method definitions, enum variants, and type parameters.

Closes #14240.
Closes #15887.
Hm ok, perhaps this could use something like [`count`](http://doc.rust-lang.org/std/iter/fn.count.html) with a check if the variable modulo two is one? Could you also add a comment explaining how you're just alternating back and forth between parsing the two?