patch: use ctx.node() instead of bare node variable

Future patches will allow patch.diff to take a basectx so node1 (and node2)
could make hexfunc error out. Instead, we'll call the node function on the
context object directly.
basectx: pass raw context objects to patch.diff
memctx: add _manifest implementation that computes the filenode

This is an initial implementation of having a manifest for memctx that computes
the hash in the same way that filenodes are computed elsewhere.
test-context: add test for memctx status
test-context: add test for performing a diff on a memctx

We now see the first result of all that refactoring of memctx: we can now diff
against a memctx.