Implemented final overload feature.

  * Overloads defined using the 'overload' keyword are final.

        define foo;
        overload foo(x) {}     // foo(x:T) is final
        overload foo(y:Int) {} // ambiguous match error

  * Overloads defined using the 'default' keyword can be overridden
    by subsequent 'default' definitions and 'overload's.

        define foo;
        default foo(x) = false;
        default foo(x:Int32) = true;    //OK as foo(x:T) not final
        overload foo(x:Float32) = true; //OK as foo(x:T) not final
        default foo(x:Int32) = false;  //OK as foo(x:Int32) not final

  * Default overloads may be defined in any module.

  * Standalone functions are unchanged.

Final overloads are off by default until the library has been
modified to be compatible. A compiler flag '-final-overloads' has
been added to turn final overloads on.

The library has been updated with 'default' overloads to allow
the bindgen tool and hello world example to compile with final
overloads enabled.
Add final overload tests.
Tests use -final-overloads compiler flag.
Reworked ambiguous match error reporting to use
existing match failure system.

Fixed final overloads tests (fiel naming typos etc.)
Update final/default test to show which overload is called as per @stepanchegs suggestion.
Remove some unnecessary 'passthrough' overloads in core/numbers.
Remove unnecessary defaults by testing for different arg types
where possible.
Remove unnecessary asExpression for numericConvert as it gets
inlined from the pattern overload anyway.
Merge pull request #478 from agemogolk/final

Final overloads