Add three functions which take/return strings and string arrays. This
creates some interesting problems how to combine the C semantics of
returning a char** with the Rust semantics of freeing objects once they
go out of scope.
This now also relies on the Rust standard library, which needs a few
system libraries. Link them.