Fix the binop leg of the parser to correctly consider only a single LHS node

Work gracefully around malformed "no lhs" cases as well
Original (now passing) test for 08e163601
Treat RNO as a unary op, and properly normalize it
Fix the reassembler to treat RNO as the precious special snowflake it is

Yes, the parser is accumulating a lot of cruft this way with special casing
and whatnot, and yes it is necessary for the future when we write a real
parser which will *HAVE* to deal with the corner cases. The accumulated set
of tests is the goal here (with the side effect of better UX) -- ribasushi