This makes it possible to automatically free the string in the correct
way expected by both c and rust.
Rust strings can now just be freed by the rust allocator, whilst c
strings are forgotten, so that the c allocator may free them.
BREAKING CHANGE: All usage of explicit mentions `std::string::String`
in your `handle_cmd` function will need to be replaced
by `trixy::types::newtypes::String`. Otherwise these
types should provide the same methods.
The rust based test were both not sufficient to cover all edge-cases and
so unmaintainable that they nearly always didn't even compile. This new
test framework should alleviate both concerns.
However, one big problem still remains: it does not support test cases
that should fail, so these have just been left in the `./tests`
directory.