My motivation for this change was to make repo[node] not load the
dirstate (more about that in the next patch), but I think it makes
more sense this way too. For example, raising RepoLookupError seems to
belong better in the repo lookup function
(i.e. localrepo.getitem).
This makes the changectx constructor very simple -- it just assigns
the given repo, revnum, and nodeid to properties.