Better atom divider regex; remove incorrect local use
First, we didn't need to make $last_type local, and it broke explicit
grouping anyway. That's removed.
Second, we are smarter about finding the boundary of atoms. Previous
to this commit, and curly brace could send the parser into a tailspin
from which it would not recover. Now we use alternation instead of
a character class, which is much safer with the default multi-character
float syntax specifier.
Third, as a catch-all, if we can't parse the remained of a query we
now simply say so (when in debug mode) and go away, instead of risking
an infinite loop. We do this via a final, unqualified "else" clause
in decompose().
Signed-off-by: Mike Rylander <mrylander@gmail.com>