Allow MCStringConvertToUTF8 to return a length

The existing MCStringConvertToUTF8 function calculated the byte length of a UTF-8 encoded string internally but did not provide a mechanism for returning this. A wrapper has been added for existing callers with no interest in the length.
Add IO_{read,write}_stringref_utf8

These functions read a UTF-8 encoded string into a StringRef and write a StringRef as a UTF-8 encoded byte stream, respectively.
Modified MCTooltip and MCObject to use StringRef tooltips

The tooltips used and stored by MCObject and MCTooltip now use StringRefs and support Unicode for I/O.
Change MCControl::{Get,Set}UnicodeToolTip to take DataRef

These methods now take a DataRef containing UTF-16 encoded characters when explicitly requesting Unicode.
Rename new MCStringConvertToUTF8String to MCStringConvertToUTF8

Function renamed in order to better reflect its operation. MCStringConvertToUTF8String is implemented in terms of the renamed function.
Merge remote-tracking branch 'upstream/refactor-syntax_unicode' into refactor-syntax_unicode_object

The new string manipulation methods in libfoundation/foundation.h are required in order to simplify some conversion code.
Fix to IO_read_stringref_utf8

Updated the function to remove a resource leak.
Simplify MCControl::{Get,Set}UnicodeToolTip

These methods now use the MCString{Encode,Decode} functions in order to simplify their implementation.
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_object
Cleaning and adding new method MCTooltip::cleartip

The new method should be used whenever a tooltip message is to be set to empty. It is no longer permitted to call settip(NULL) (though settip(kMCEmptyString) will still work).

Additional minor clean-up has been performed.
Merge branch 'refactor-syntax_unicode' into refactor-syntax_unicode_object

Merge with upstream branch before pull into upstream.
Updates on Image object field aand methods
Change MCControl::SetToolTip logic

Simplified the logic for tooltip updates.
Simplify MCTooltip::settip logic

MCTooltip::settip now uses cleartip() internally when attempting to set the tooltip to the empty string.
Merge pull request #154 from runrevfraser/refactor-syntax_unicode_object

Refactor syntax unicode object
Tweaks to make things compile.
Convert MCAd to use a StringRef name
Dummy implementations of MCStringEncode/Decode/CreateWithBytes
Initial implementation of new MCString methods.
Implemented MCStringCreateWithCharsAndRelease