read: simplify top-level datum grammar
read: rewrite r5js.read.bnf internals to improve clarity and do less instantiation