Add set of functional tests

These use the same 'format' as uPy's test so they can be run by uPy's run-tests
by invoking it from withtin this tests with --test-dirs=py as argument.
Other requirement is InitUpyWrapTest() has to be invoked from within uPy..
Use perfect forwarding in functioncalls to avoid copies when passing by value
Add support for catching native exceptions and re-raising them as uPy errors
Add support for conversion of uPy str <-> const char*
Add test to check if finaliser is called properly
Make the project build upywraptest as a native module (requires windows-pyd branch from micropython)