Proposed fix for handling sourceDocumentNames under SourceDir correctly (as per #122)

This is a fix for the original issue as described in #122. It correctly handles the more esoteric ways of adding to sourceDocumentNames as was originally described in #113.

I have mixed feelings about this fix though:
__The bad bits__: There is far too much code here - most just to cover some cases such as warning people not to use absolute paths etc. (I feel the complexity can be avoided by forcing files to be descendents of `sourceDir` and simply ignoring anything else).

__The good bits__:
The fix is a move in the right direction. We should utilise the power and flexibility which `FileTree` / `FileCollection` offers us. It will give us more options to handle some of the items mentioned in the dialogue in #122. What we can do with `FileTree` can be discussed in a separate issue, but should probably be done before we release 1.5.1.