Sampling

I was thinking that it would make more sense for unfulfilled sub-samples to be replaced by random samples, instead of by more of samples from the next predicate block, to maintain roughly the same # of samples from each predicate-field combo.

We could also do some sort of quick scanning beforehand to guess which predicate blocks can fulfill samples, to pass a more informed subsample_size to samplePredicate. But that seems a bit too complicated.

I was also thinking - w/ the sample method as is, either we are not going to return the # of samples that the user asked for, or we are not going to return the random proportion that the user asked for. I decided to keep the # of samples that the user asked for, but perhaps we would want to instead return the random proportion that the user asked for?