Use prettybench for benchmarking when available
Handle nil values when querying

The extra nil checks come at the cost of query performance.
There may be room to improve this in future work.

benchmark (old)                          iter        time/iter      throughput
---------------                          ----        ---------      ----------
BenchmarkAggregateQuery                  2000     853.86 μs/op   19675.27 MB/s
BenchmarkFilterQuery                     2000    1296.93 μs/op   12953.63 MB/s
BenchmarkGroupByQuery                     500    5105.45 μs/op    3290.60 MB/s
BenchmarkGroupByWithTimeTransformQuery    500    5504.12 μs/op    3052.26 MB/s

benchmark (new)                          iter        time/iter      throughput
---------------                          ----        ---------      ----------
BenchmarkAggregateQuery                  2000       1.36 ms/op   12312.28 MB/s
BenchmarkFilterQuery                     1000       1.96 ms/op    8552.46 MB/s
BenchmarkGroupByQuery                     500       5.83 ms/op    2881.75 MB/s
BenchmarkGroupByWithTimeTransformQuery    500       6.34 ms/op    2649.74 MB/s