use File.symlink

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
move make_relative_symlink error handling into keg and adjust callers
use actual keg name
raise useful errors

we'll restore the messages later.
avoid realpath where it is not necessary
add a TODO