Fixes #44 support linked folders

* fixing this required changing how files are tracked in the services so
that they are now identified by the path within the workspace
* i believe this is a prerequisite for cross-project compilation because
that will require the services to have some concept of the projects and
their dependencies
* i chose "eclipse" as the scheme for representing file paths relative
to the workspace root to distinguish those paths from the ones for files
not in the workspace (which use the normal "file" scheme)
* the services now keep track of the eclipse-specific path of a file as
well as the file system path
* the services key files by their "fileName" - this is the
eclipse-specific path so that when the path is passed back to Eclipse,
it can look up the file even if its in a linked folder
* i believe this actually improved the performance of file lookups (so
F3 and the hover click functionality) due to the fact that file lookups
are now more like constant time operations versus searches through the
file system to match up a real file with their eclipse equivalent
* the logic for dealing with file paths has been centralized (which is a
nice cleanup compared to the existing code)