Let MCAssert actually do something on Linux and OSX

Assertion failures are now reported and acted upon.
Add a noreturn attribute to MCAssert and MCUnreachable

This hint makes the static analysis function of certain compilers more useful.
Fix OSX assertion failure at startup

An error value was being incorrectly checked.
Correction to issues identified via static analysis
More fixes for potential problems flagged by the Clang static analyser
Fix a memory corruption bug

A number of StringRefs were being released without being retained first.
Temporary fix to prevent Linux/Win32 startup freeze

On startup, the engine would go into an infinite loop due to trying to break a UTF-16 string containing an odd number of bytes. This fix is quick and dirty and will be removed when refactor-syntax_unicode_fieldtext gets merged.
Fix a memory leak

MCEngineMarkVariable was evaluating into a ValueRef but never released it.
Releasing a DataRef should actually free memory

There was no __MCDataDestroy method (and no corresponding case in the __MCValueDestroy switch statement) so memory allocated to an MCDataRef was never freed. One noticable consequence of this is that MCScriptPoint leaked the UTF-8 version of the script.
Merge branch 'refactor-syntax_unicode_analysis_cleanups1' into refactor-syntax_unicode_analysis_cleanups2
Merge branch 'refactor-syntax_unicode_analysis_cleanups0' into refactor-syntax_unicode
Merge branch 'refactor-syntax_unicode_analysis_cleanups1' into refactor-syntax_unicode
Merge branch 'refactor-syntax_unicode_analysis_cleanups2' into refactor-syntax_unicode