Added support for parentheses in expressions

Also removed the special "parenthesis" expression type; parentheses function
purely as a syntax hint, and don't need to be reflected in the AST.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
Added support for the AND operator

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
Added support for TIMESTAMPTZ fields and constants

These work exactly as int64_t.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
select.c: Apply WHERE condition even when searching for primary key

There may be other parts of the expression than the primary key filter.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>
Added some support for the equality operator

With the current approach, we call the same function, ca_compare_equal, for
each pair of variables we are comparing.  This does not take advantage of the
power of LLVM; comparisons between constants will be evaluated for each row,
and we end up rechecking the type of each variable for every comparison.
Ideally, comparisons for floating point, integer and text types should be
inlined.

Furthermore, this approach requires creating a new function for each of !=, <,
<=, >= and >, leading to code bloat and instruction cache pressure.

Signed-off-by: Morten Hustveit <morten.hustveit@gmail.com>