This extension is a thin wrapper around the native changelog.index object
that allows us to incrementally replace its methods. Since some index
methods (ex. nodemap.__getitem__) are called very frequently, Cython
features are used intentionally to avoid overhead. This also makes it easier
to integrate logic with C interface in the future.
As a side effect, this patch enforce index to be conceptually separate
from nodemap. So changelog.index[node] could be made illegal in the
future, which seems to be a good thing.
I'd also mention why this is useful.