Raise Oj::ParseError when string contains NULL byte

If I parse a string with a NULL byte, Oj throws ArgumentError from `rb_string_value_cstr`, although the case really is an parse error.

To enable proper error messaging, I changed parse.c to use `rb_string_value_ptr` instead of `rb_string_value_cstr` and detect string ends using `pi->end`. If a NULL byte is encountered when parsing strings, proper error is raised. The NULL detection is only needed in `read_str` as `read_escaped_str` has a whitelist of allowed characters which doesn't include NULL.

The behaviour can be reproduced with

```ruby
Oj.load("\"\0\"")
```
Can you run performance tests with this inline vs a regular function. That part of the code is sensitive to extra function calls.