Pass the link mode to resolve_any_conflicts
Remove default value from Keg#link_dir mode parameter

Now that this is always called with an explicit mode argument, let's
make sure it stays that way.
Avoid realpath where it is not necessary

Symlinks in opt and LinkedKegs point directly at a keg in the cellar, so
only resolving once symlink should suffice, and make it clear what path
we are interested in.
Use File.symlink to link kegs

Before:

$ git rev-parse HEAD
f6cd59c448b914c14b5f41c536428d3c3c8da12c
$ time brew link git
Linking /usr/local/Cellar/git/1.9.1... 204 symlinks created

real    0m0.929s
user    0m0.441s
sys     0m0.365s

After:
$ time brew link git
Linking /usr/local/Cellar/git/1.9.1... 204 symlinks created

real    0m0.237s
user    0m0.190s
sys     0m0.045s
Rescue specific exceptions instead of guessing what happened
Move make_relative_symlink error handling into keg and adjust callers
Raise useful errors from make_relative_symlink
Only unlink after a LinkError
Raise AlreadyLinkedError when a keg is already linked
Adjust link command for updated error handling
Adjust installer for updated link error handling
Use resolved_path instead of dirname and readlink directly