Implement sparse ProductValue

This is step 1 of 2 in a 2-step refactoring to allow mostly-constant data, e.g. data that is fully observed but has some frequently occurring value in > 95% of rows.

This pull implements a sparse value data structure with three sparsity types:
* ALL: all values are observed. This only works for fully observed rows.
* DENSE: some values are observed. A bitmask marks which values are observed, and values are stored in packed arrays. This is the current implementation. This best in the density range [0.1, 1)
* SPARSE: very few values are observed. A list of observed ids is stored, and values are stored in packed arrays. This is best in the density range [0, 0.1].

We try in python to deal only with DENSE rows. The query server should start off assuming DENSE rows. The C++ helper `ValueSchema::normalize_dense(row)` and the python class `cFormat.Rows` help to deal with DENSE rows.