improve array wildcard matching, add named varient

'_$' acts as expected in more places
'_$name' captures results in an array
update gitignore with fixed rule
add array wildcard support to object expressions

since '_$' is not a valid property,
we use '_:$' instead, with '_:$name' for the named varient