Extract Linker interface

Extract a Linker interface
Add some methods to the Linker interface
Move the implementation to DefaultLinker
Implements missing methods in DefaultLinker
Add ServiceProperties to DefaultLinker