The word "Index" is crazily overloaded in this function. `IndexN` is properly named as the type is a 2-tuple that is `{partition-index(), n-val()}`, but `IndexKey`, `IndexHash`, (later on) `IndexKey2i, IndexData, IndexHash2i` have nothing to do with indexes. Well, the 2i stuff has to do with secondary indexes. Without 2i, `IndexKey` is still confusing, since there's no index involved. With the addition of 2i, things are even more confusing. `KeyBin`, `ObjHash` seem more correct terms for `IndexKey, IndexHash`, etc.

Or something else, dunno really. Would prefer different names as this function is very confusing to read as-is.

Also, I apologize for the unfortunate naming of `riak_kv_index_hashtree` since that likely encouraged the use of "Index" here. `riak_kv_index_hashtree` really should have been called `riak_kv_vnode_hashtree`, but we use the terms vnode, partition, and index (eg. partition index, eg. same thing as partition) interchangeably throughput the codebase. We should probably stop that someday.