add list object to differentiate arrays

Most things can return lists, but some things want to return an array.
Since Parse::RecDescent can only return scalars, we need some way of
differentiating between a filter or expression returning multiple
things, and a filter or expression returning an array.

A list is just a blessed array and can be flattened. When we only want
one thing, a list will take one item, while an array is one thing.

This is a lot like Perl's way of doing it, except we have to use
arrayrefs for both circumstances.
fix number parsing (int, float, bin, hex, oct)

We still have to use eval to get Perl to turn them into its internal
format.
fix the missing empty function
add the missing sort function
use eval to get rid of the literal quote characters

Internally, quoted strings don't have the opening and closing quotes,
they're just for the parser.
fix the order of <|> and <=|>=

We must put the <= first, so that > doesn't get matched and leave a
dangling "=" that doesn't match anything