merge: fix spurious merges for copies in linear updates
We make better use of contexts to accurately identify copies that
don't need merges.
Add a simple test and update other tests.
#!/bin/sh
hg init
mkfifo p
hg serve --stdio < p &
P=$!
(echo lock; echo addchangegroup; sleep 5) > p &
Q=$!
sleep 3
kill -HUP $P
wait
echo .hg/* .hg/store/*