This makes writing generics a lot easier because we can safely iterate across objects, so things like factorize() and match() would just work correctly.
For example, currently BiocFrame iteration produces a dict, which is not hashable. (Incidentally, BiocFrame iteration also includes the row names in the tuple, and it probably doesn't need to, as the row names are optional.)