make categorize_dependencies a static method of LibraryDependencies

its the only place its really used
make arbitrate_relative a staticmethod of DynamicLibrary

since its only used there
BUGFIX: add missing import
add TestDynamicLibrary
add tests of link.py
test the other possible case in _process_outside_targets

RecipeCorrectButBuildScriptBroken
remove TestBaseLinkErrorHandler

no need to test it, it can't be used
BaseLinkErrorHandler.handle: exit if self.broken
add docstring to LinkErrorHandler._categorize_errors