Simplify `argument` production
Remove parenthesis_expr

This was necessary previously to handle yields, now it only clutters
up the grammar.
Introduce optional_expr
Don't distinguish between ast/list in parser

This removes the need to use $<ast>{n} or $<list>$ casts in the
reduction actions.

Keeping the distinction in the parser doesn't really give us any
benefit and only makes changing the grammar harder.