OK, I've tested the two following helper classes against all the platforms with the necessary #if's to unify all file and reflection requirements by the solution

* Utilities - FileHelpers.cs - built from all the references / code snippets for files used throughout the codebase in to a single class
Centralised helper classes for #1640
(Only changes that are included is a renamed GetFilename function and other minor changes suggested by @tomspillman)

* Utilities - ReflectionHelpers.cs - built from all the references / code snippets for reflection used throughout the codebase in to a single class

Note all code present in the classes come directly from implementations in the MG codebase.  No new additions added (unless is was for refactoring)

Next step is to replace current implementations (moved to these classes) in the MG codebase and get rid of a whole load of #ifs
Ensure a playing song is stopped when switching songs.
Fixed pitch being doubled sometimes for mono sounds.
Fixed missing || on #if for IOS || MonoMac
Removed unnecessary comments from reflection helper functions
Cleaned up comments from FileHelpers.cs.
Only informative comments left which explain some implementations
PipelineProject is now really just the data. Moved stuff for command file parsing / saving / importing to PipelineProjectParser.
PipelineProject is no longer directly used by the view, the view allocates a PipelineProjectProxy.
This is so we don't have winforms specific UITypeEditor etc attributes on PipelineProject.
Oops, missing file.
New projects (or imported ones) will have OutputDir=bin and IntermediateDir=obj by default.
Oops, parser was not saving several project properties.
Wrapping paths in quotes when executing MGCB.exe.
Merge branch 'develop' into PipelineFix2
Found offending missing namespace, fixed for MonoMac
Had to reorder Windows_Phone & WINRT #ifs as Windows Phone project now has both
Added PipelineManager.ResolveImporterAndProcessor().
Added PipelineManager.ProcessContent(PipelineBuildEvent).
Implemented PipelinePocessorContext.BuildAndLoadAsset().
Validating parameter arguments, would previously crash later if they were null (which is valid).
Fixed SongProcessor to register the output song file for cleanup.
Added build output files to event metadata.
Fixed clean to delete extra build output files.
Fixed profile saving.