partway implemented ML file dumper.

Nowhere near done yet - just pushing to fork so I can show whats there
to others.
Worked out a better system for storing the original source
line numbers that uses less space.  At this point the
"write" part of the algorithm is done, and it's time to
move on to the harder part, of reading it back in.
Markdown ate my "<" and ">" in the document.  Replaced with \&lt; and \&gt;
Document still mentioned the 7-bit bytecode with high-bit for source
line presence - a design that I dropped and the docs needed the
reference to it reomved.
More cleanup of the doc file.
A few small tests working - still need more tests.
Modified the doc to match the recent changes.
Addresses: #239 Ship with kOS part won't load with Quickload.

Using Quickload will cause a "Object referenced is not an instance of an
object" error which will cause the ship to not load completely.  Adding
this try..catch loop into the OnLoad event in CPU.cs will catch an
unhandled exception from Compile which happens when Quickload is used.
Updated to add:
*    OpcodePushRelocateLater
*    OpcodeLabelReset
as ways to store stuff in the ML file efficiently for Opcode.Label relocation.

Removed Exteraneous Debug.Log() messages that were helpful when debugging but
were also massively bogging down the speed.
made catch more explicit
if we want more projects, each needs a folder
added new project not dependant on unity
Work on new Structure format and moving classes to Safe namespace
forgot to save
More work on safe
Merge remote-tracking branch 'Dunbaratu/store-compiled-file' into prefix_redux

Conflicts:
	src/Compilation/KS/kRISC.tpg
	src/kOS.Safe/Compilation/CodePart.cs
	src/kOS.Safe/Compilation/Opcodes.cs
	src/kOS/Persistence/Volume.cs
	src/kOS/Utilities/Utils.cs
	src/kOS/kOS.csproj
Fixes #239: Ship with kOS part won't load with Quickload (better).

The problem turns out to be with how the Context Node is written into
the save files: string values are written without enclosing
double-quotes.  This causes the parse error, which throws an exception,
etc.

So, in Variable.cs I added this function to get the type of information
stored in the variable:
~~~
public Type GetType()
{
return _value.GetType();
}
~~~

Then in CPU.cs, in the OnSave, I added a check for if the type is
"System.String", and have it write the double quotes:
~~~
if (kvp.Value.GetType().ToString() == "System.String")  // if the
variable is a string, enclose the value in ""
{
varNode.AddValue(kvp.Key.TrimStart('$'), (char)34 +
Persistence.ProgramFile.EncodeLine(kvp.Value.Value.ToString()) +
(char)34);
}
else
{
varNode.AddValue(kvp.Key.TrimStart('$'),
Persistence.ProgramFile.EncodeLine(kvp.Value.Value.ToString()));
}
~~~

I also added logging in the OnLoad where it tries to run the Context
information so that it will log the whole text that's going to be run.
This would be helpful in figuring out just what has gone wrong here in
the future if something else like this comes up.
Merge remote-tracking branch 'origin/master' into develop
Merge branch 'master' into develop
Merge remote-tracking branch 'upstream/develop' into develop