Add Unicode support to MCGraphic

MCGraphic now uses an MCStringRef to store its label. Wrapper functions MCFontMeasureText and MCFontDrawText were added - these take an MCStringRef rather than a {const char * p_text, size_t p_text_length, bool is_unicode) triple. The wrappers will need modification when MCScreenDC can take an MCStringRef in its corresponding methods.
Further cleanup of MCGraphic

The getters/setters for the label property of MCGraphic have been cleaned up. The {Get,GetEffective,Set}UnicodeLabel functions now work with MCDataRef binary strings instead of MCStringRef. Do{Get,Set}Label have been removed.

The MCFont{Measure,Draw} wrappers have been fixed to work properly with StringRefs in both native and UTF-16 encodings.

All label manipulation functions now reject nil StringRefs - the no-label case is represented by setting the label to kMCEmptyString instead of nil.

MCGraphic::getlabeltext() now has get semantics, returning the label without a refcount bump.

An overload of IO_write_stringref has been added with a parameter explicitly requesting the encoding to use when writing out the string, regardless of the underlying encoding used by the given StringRef. A corresponding IO_read_stringref has also been added.
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_graphic

Requires updated libfoundation/foundation.h header from upstream in order to clean up some StringRef/DataRef conversion code.
Simplify the new IO_{read,write}stringref functions

The implementation of these methods is much simpler, making use of the MCStringEncode and MCStringCreateWithBytesAndRelease functions.
Simplify MCGraphic::{Get,Set}UnicodeLabel

These methods now use the new MCString{Encode,Decode}{,AndRelease} functions, making their implementations much simpler.
Add Unicode support to MCField

MCField now uses an MCStringRef to store its label.
Simplify MCField label handling

As per Mark's suggestions, simplified the label handling for MCField (the label should now never be set to nil, only the empty string).
Simplify MCGraphic::SetLabel

SetLabel was more complicated that necessary; the input parameter can never be nil.
Removed un-necessary checks for nil
Merge pull request #153 from runrevfraser/refactor-syntax_unicode_field_clean

Refactor syntax unicode field clean
Further cleanup

Cleaning up some minor bits and pieces that got missed previously.
Merge pull request #150 from runrevfraser/refactor-syntax_unicode_graphic

Refactor syntax unicode graphic
Rename MCField::settext to settext_oldstring

The MCString variant of MCField::settext has been renamed to MCField::settext_oldstring. In its place, the new MCField::settext takes a StringRef.
Merge pull request #155 from runrevfraser/refactor-syntax_unicode_field_clean

Rename MCField::settext to settext_oldstring