- what does get_key_range do? It looks like it returns a list of keys, but why does one have to specify a list of column family names?

It returns a list of keys which exist.

In my experiments, I think that a key "existing" is defined as having at least one column in one column family that exists (i.e. has not been deleted). Each column needs to be deleted individually for a key as there isn't a bulk delete (yet).

get_key_range gives you all the keys in a given range; what sort order / collation it uses isn't clear, but I'd assume it would be a binary sort, so 'a' > 'Z' etc. I've mostly used numeric keys.

It doesn't tell you which column families or columns exist for that key.