Fix a logic error causing output of real numbers in ufo.c to fail.
Free Python objects as necessary.
Merge pull request #1651 from fontforge/fix_real_output_1

Fix output of real numbers in ufo.c.
Merge pull request #1652 from fontforge/ufo_free_python_1

Free Python objects as necessary.
Attempt to map U. F. O. ascent and descent values to native values better and handle failure to do so better.
Merge pull request #1654 from fontforge/issue_1645

Improve handling of U. F. O. ascent and descent values.
Native script AddXHint width arg fix; error double free fix

Coverity pointed out that fontforge/scripting.c _AddHint() was missing
setting variable 'width' in one place.  This looks to be a simple typo.

Testing before fix generated error message "AddHHint: Bad hint width"
as the uninitialized value of 'width' was -18032.  Testing after the
fix saw no error message.  The line of code was:
>       AddHHint(542.5,10.25);

While testing under gdb a double free was detected while cleaning up
after the native script error was declared.  Call path
      ScriptError()->traceback()->calldatafree()
was freeing all string arguments in all Context's on the stack.  But
then ProcessNativeScript() at end *also* wanted to free iits args on
the top-level Context which it set with all strings.  Changed
calldatafree() to set pointers to NULL after it frees them.
Add coverity +kill annotation to scripting.c traceback()

Coverity was showing a number of false positives because it did not
understand that in the context of scripting.c calling ScriptError()
effectively terminated the calling routine, just like a return or
an abort().

Coverity would report uninitialized variables or out-of-bounds reads
or writes and the like, as it analysed code following a call to
ScriptError().  For example, in fontforge/scripting.c :: bSqrt() it
would report that variable 'val' could be uninitialized in the call
to sqrt().

There is a mechanism to instruct Coverity that a routine should be
considered as terminating processing.  Adding a "function annotation"
before the function gives it the information that should prevent it
from being so confused.

This change adds such an annotation to routine traceback(), which is
the actual routine that uses the quite rude longjmp() to terminate
normal processing.
>         /* coverity[+kill] */
>         static void traceback(Context *c) {

We should inspect the _next_ Coverity report and see if this clears
up a number of the false reports.  If not it may be that this same
function annotation needs to be added to all the _using_ routines,
such as ScriptError().
Coverity leak scripting.c SetGlyphName SetUnicodeValue

Any call to SetUnicodeValue() would leak the glyph name.

For glyphs with comments, e.g.
    Comment: "This glyph worked fine on i?86 but failed ..."
every call to native scripting SetGlyphName() or SetUnicodeValue()
would result a leak of the old comment.

Example native source:
        glyphname = "exclam";
        Select( glyphname );
        SetGlyphName("AAA", 0);
        SetUnicodeValue(65, 0);
Merge pull request #1657 from tshinnic/coverity_leak_scripting_setglyphname

Coverity leak scripting.c SetGlyphName SetUnicodeValue
Merge pull request #1656 from tshinnic/coverity_kill_script_traceback

Add coverity +kill annotation to scripting.c traceback()
Merge pull request #1655 from tshinnic/script_native_AddXHint_width

Native script AddXHint width arg fix; error double free fix
Fix a missing reset of the file position in _readencstring as reported by Norbert Janssen.
Merge pull request #1659 from fontforge/readencstring_missing_fseek_1

Stop corrupting file position on a failed encoding string parse.