Better error messages for link failures

This pull request moves the link error handling out of Pathname and into Keg. In addition to more straightforward error messages (e.g. we print the name of the keg that a conflicting file belongs to), I've tried to address some minor annoyances that have popped up over the years.

Please test this branch and report any weird behavior. Thanks.