A First step towards better syntax highlighting

This is the first stage of better syntax highlighting. It currently handles greying out blocks that are conditionally compiled out, multiline block comments and multiline strings, as well as highlighting of classes. Comments and criticisms welcome. 

Has not been testing on OS/X, but has been tested on Windows.

See below screenshot for an example: 

![image](https://cloud.githubusercontent.com/assets/1762752/4013831/7a2c0200-2a1a-11e4-86c4-d11886cad04a.png)

See the following lines from the CSharp Syntax Mode:

``` csharp
public static IEnumerable<string> GetDefinedSymbols (MonoDevelop.Projects.Project project)
		{
			var workspace = IdeApp.Workspace;
			if (workspace == null || project == null)
				yield break;
			var configuration = project.GetConfiguration (workspace.ActiveConfiguration) as DotNetProjectConfiguration;
			if (configuration != null) {
				foreach (string s in configuration.GetDefineSymbols ())
					yield return s;
				// Workaround for mcs defined symbol
				if (configuration.TargetRuntime.RuntimeId == "Mono") 
					yield return "__MonoCS__";
			}
		}
```

I figure that MonoCS = MonoCSharp, so I changed that to MonoFS for MonoFSharp. Is this wrong?