Allow maps in match clauses

Permitting maps in match clauses allows the programmer to control the
assignment of relationships should they desire. For example, to create
the match clause

  MATCH q = n-[:KNOWS]-p

the programmer may write

  (match {:q [:n [:KNOWS] :p]})

However, by allowing this syntax there is a potential to generate
queries that behave unexpectedly. For instance the match expression

  (match {:q [:n [:KNOWS] :p]}
         [:p [:KNOWS] :m])

might generate the match clause

  MATCH q = n-[:KNOWS]-p, p-[:KNOWS]-m

If you are interested in returning `q`, this is a problem.

To prevent this from happening unbound matches are automatically
assigned a generated identifer. So the above clause becomes something
similar to

  MATCH q = n-[:KNOWS]-p, A1837 = p-[:KNOWS]-m