sstables: add compressed reading to sstable.cc
sstables: add compressed reading to sstable.cc

This patch adds compressed_file_input_stream, which is a
"random_access_reader" subclass just like the existing file_input_stream.

Changed all the parsers to take a reference to random_access_reader (the
base class) instead of file_input_stream.

The code is now ready (sort of) for compressed-file reading, but it doesn't
actually do that: sstable::read_simple() still always uses file_input_stream
for now.

Note: despite all the layers of classes holding our input streams, we
actually pay surprisingly little cost for virtual function calls or pointer
dereferencing: random_access_reader::read_exactly is *not* a virtual function -
it always calls _in.read_exactly(). This is input_stream::read_exactly(),
which again is not a virtual function (the rarely called get() is a virtual
function is virtual, but input_stream::read_exactly() usually just reads reads
from an already available buffer.

Signed-off-by: Nadav Har'El <625169824b719df98706d88646d0aae6f368ae4d@cloudius-systems.com>

asias/scylla,eklitzke/scylla,shaunstanislaus/scylla,bowlofstew/scylla,dwdm/scylla,asias/scylla,eklitzke/scylla,justintung/scylla,wildinto/scylla,shaunstanislaus/scylla,stamhe/scylla,stamhe/scylla,kjniemi/scylla,phonkee/scylla,capturePointer/scylla,gwicke/scylla,kangkot/scylla,kjniemi/scylla,dwdm/scylla,rluta/scylla,senseb/scylla,linearregression/scylla,avikivity/scylla,tempbottle/scylla,guiquanz/scylla,tempbottle/scylla,scylladb/scylla,shaunstanislaus/scylla,respu/scylla,aruanruan/scylla,guiquanz/scylla,acbellini/scylla,raphaelsc/scylla,acbellini/scylla,kangkot/scylla,linearregression/scylla,rluta/scylla,capturePointer/scylla,wildinto/scylla,phonkee/scylla,kangkot/scylla,raphaelsc/scylla,victorbriz/scylla,rluta/scylla,avikivity/scylla,bowlofstew/scylla,rentongzhang/scylla,phonkee/scylla,scylladb/scylla,respu/scylla,dwdm/scylla,acbellini/scylla,senseb/scylla,raphaelsc/scylla,rentongzhang/scylla,glommer/scylla,stamhe/scylla,gwicke/scylla,tempbottle/scylla,linearregression/scylla,victorbriz/scylla,glommer/scylla,eklitzke/scylla,respu/scylla,gwicke/scylla,glommer/scylla,scylladb/scylla,aruanruan/scylla,kjniemi/scylla,justintung/scylla,wildinto/scylla,duarten/scylla,asias/scylla,avikivity/scylla,guiquanz/scylla,victorbriz/scylla,bowlofstew/scylla,aruanruan/scylla,duarten/scylla,justintung/scylla,scylladb/scylla,rentongzhang/scylla,duarten/scylla,senseb/scylla,capturePointer/scylla