Refactor LoadService to make use of resources

This contains a very heavy refactor of require/load logic. The new version resides in a new LibrarySearcher class, whereas the old methods are deprecated and are not being invoked anymore.

There are four main paths for loading a file:

1) builtin library
2) Via a FileResource
3) As a ServiceLibrary (when requiring 'foo' and java object FooService is being loaded)
4) Via a classpath.

1-3 are now being handled by LibrarySearcher. 4) still resides as a backdrop in LoadService with intent to being deprecated as well, once a ClasspathResource implementation of FileResource exists.