Handle null bytes in strings

Starting from 2.2.0, dumping strings that contain null bytes have
failed. This is caused by the change to use `rb_string_value_cstr`
instead of `StringValuePtr`. Reverting back to StringValuePtr fixes this
issue as StringValuePtr only returns the pointer to the buffer without
scanning the string for nulls.