Add --build-mode=singleFile switch

This is divided into 3 independent commits.
The first one seemed an obvious one once I became familiar with this part of the code.
The second one is pretty simple stuff, and btw I think dub init should create it be default (this is especially important when creating a library, as one might want to use git submodules with it, and a build of the library shouldn't make the repository dirty).
Finally, the `singleFile` implementation, which enable building on machines with limitations (see rejectedsoftware/vibe.d#703).