[trunk] Reformatted code to make it easier to debug
[trunk] Fixed syntax for location keys for the DotNetFramework 4.0
[trunk] Guarding against visualstudio project creation for compilation only steps - there is no output directory
[trunk] Adding method GetSingleRawPath() which does not automatically quote any space-containing paths. This is so that internal functions rather than external processes can use the paths. Made LocationArray cloneable due to exceptions thrown when one of these is used as the type for an interface option. Improved the exception message for scaffold locations resolving to nothing.
[trunk] Replaced other uses of Opus.Core.Array<Location> with Opus.Core.LocationArray. Noticed casting an Array<Location> as a LocationArray was returning null, so created a new instance. This happened when there were Includes and Excludes on the module
[trunk] ITool.OutputLocationKeys is now a function, with the BaseModule as an argument. This allows the location keys to be added to be a function of the module type. Not that it cannot be used as a function of the optioncollection because this does not yet exist on the module