store capnproto data directly on disk (instead of JSON)

The advantage is that we now don’t have to convert capnproto to JSON
until the client asks us for the specific page. I.e., for a query with
60_000 results on 6000 pages, we previously had to convert 60_000
results, whereas now chances are we’ll only need to convert a couple of
dozen of results.

This leads to a 2x speed-up (measured on large queries, but should be
transferrable to small queries as soon as they have >1 page of results).
don’t store the length of a result in the resultPointers

This saves us an int64 worth of memory for each resultPointer. The
length was unused since we switched to writing capnproto to disk (which
encodes the length of the segment).