gen_python: stronger typesafety

Stop passing c_void_p to functions and instead force the
functions to accept params of the right class.

As a side effect, half of the unit test is now gone because
we cannot just pass integers to wrapper functions anymore.

Keep just one file of the unit test around, echo.py now
called typesafety.py, to keep checking that typesafety is
working as expected.