Added support for more types within EffectMaterialReader
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
Preventing a crash when saving an item with a missing processor and a parameter.
Now writing all parameters rather than only those not with default values (debatable which we want to do).
Now properly remapping MGEffectProcessor to EffectProcessor.
PipelineTool now knows to use StringToColorConverter for Color type properties.
Merge pull request #2499 from aberus/effectmaterialreader

Added support for more types within EffectMaterialReader
Added folder-picker for OutputDir and IntermediateDir project properties.
Merge pull request #2501 from SickheadGames/PipelineFix2

Fix crash saving a missing processor, added folder picker for output/int directories.
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.
Fix controller removal GamePadState clear
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