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
Found offending missing namespace, fixed for MonoMac
Had to reorder Windows_Phone & WINRT #ifs as Windows Phone project now has both
Set XImporter to delegate to OpenAssetImporter
Merge pull request #2505 from JamesLupiani/XImporter

Set XImporter to delegate to OpenAssetImporter
Merge pull request #2488 from DDReaper/Centralised_helper_classes_for_#1640

Centralised helper classes for #1640
Made Glyph into a public class as well as added accessors  for SpriteFont.Texture and SpriteFont.Glyphs.

This allows for users to implement custom rendering of SpriteFonts, should they wish.

No functional changes.
Merge pull request #2506 from SickheadGames/ExposeGlyphs

Expose SpriteFont Texture and Glyph.
Merge pull request #2481 from Andreyul/double_pitch

Fixed pitch being doubled sometimes for mono sounds.
Merge pull request #2497 from JamesLupiani/StopSongOnMove

Ensure a playing song is stopped when switching songs.
Fix support for ETC1 compressed textures
Merge pull request #2507 from flyingdevelopmentstudio/fix-etc1

Fix support for ETC1 compressed textures
More robust handling to platforms in EffectProcessor.
Added exception for PS4 case.
Added initial flicker free tree updating support.
You can now add multiple files at once.
Added Edit menu.
Delete key now deletes the active item.
Tree items are keep in alphabetical order.