Support strings (+references) for native calls.

This patch introduces support for using strings with SA-MP natives.

They're always passed as std::string references, which gives us the
flexibility to deal with the rather poorly designed SA-MP API. For
example, we already had to make some concessions for declarations such
as:

native GetWeaponName(weaponid, const weapon[], len);

As such, we cannot rely on any form of const correctness in the
bindings. String references help with this, since we read-back every
string we allocate. This is a bit costly, but string operations should
be relatively rare.