Improve grammar specificity

While the original grammar worked, the resulting tree was very hard to analyze as it had little remaining tag information. This reworked grammar supports all the existing reader macros, host expressions as proposed for Clojure 1.7 and retains significantly more context information making it easy to manipulate the resulting tree.