rebase: clarify naming of variables holding node hashes - don't call them rev
rebase: always store rev in state, also when collapsing
rebase: avoid redundant repo[rev].rev() - just keep working in rev space
add: use lexists so that broken symbolic links are added

This restores the add behavior prior to d8cdd46f426d and matches the
behavior of addremove.
graft: use a real conflict for the tests

One of the graft tests grafts a changeset that changes a file's
content from 'a' to 'b' onto a branch that has changed the file's
content from 'a', via 'b', and then back to 'a' again. To prepare for
not considering this a file in need of merging, let's use 'c' as the
file's new content to make sure it has to be considered
conflicting.

There's a second similar case further down where an ancestor is
grafted. Make sure that is also considered a conflict.
merge: add test with conflicting file and remote directory rename

Changset 88629daa727b (merge: demonstrate that directory renames can
lose local file content, 2014-12-02) should clearly have added the
reverse version of the test: where the remote side renamed a
directory, added a new file in that directory, and the local directory
added a conflicting file in the source directory. Add such a test now,
and also touch up the ones already added slightly (e.g. 'local' was a
stupid value for content that can be on either side of a merge).
tests: drop unnecessary glob that causes a warning on Windows

This was triggered by 3778884197f0.
revset: move 'only' so that functions are sorted alphabetically
revset: add 'only' to DoS-safe symbols

There is no reason to disable it in hgweb because the same query can be
written without using 'only()'.