Github files (WIP #9)

There are several changes here to bring in individual files from GitHub. In this current version, it can parse a new type of entry, a "source file" in the .dependencies file which records github owner, project, file path and optionally a commit (branch, tag or rev); this is then pushed into the lockfile. When parsing the lockfile, the files are downloaded locally into a consistent file path relative to the lockfile.

Not included yet: -
- Modifying the project file to include the file.
- Looking at the reference file.
- Removing files after they are removed from the dependencies file.
- No thought currently given to updating a file that is tied to a named commit e.g. "master" when master moves on.

Please review.