patch: handle symlinks without symlinkhunk
Symlink creations and deletions were handled with a special symlinkhunk object,
working like a binary hunk. However, this model does not support symlink
updates or replacements, so we teach regular hunks how to handle symlinks.
a -> a not a symlink
% test replacing a file with a symlink
a -> b
now at: base.patch
applying symlink.patch
now at: symlink.patch
a -> b
% test symlink removal
now at: symlink.patch
applying removesl.patch
now at: removesl.patch
C b