New type: BestEffortString — passes ruby strings up until first null-byte

Regular FFI strings will raise an error when given a string with a NULL
in it. BestEffortString will simply just read all it can and use that.

Additionally, BestEffortString does not pass an empty string as a NULL.
Update CHANGELOG