Fix elsif_block "never reduced" warning

Basically if this were empty then it was functionally equivalent to above
rules that contain elsif_blocks inside of them, which apparently prevents
goyacc from being able to fully reduce the grammar because there are
rules that overlap.
Remove a duplicate parser rule for hashes
Arrays can include values besides integers
Fix another warning related to args to a call expression

I've wanted to make a type that wraps up single_node and call_expression
for some time, it's nice to have this now.