Fix test failure on later clang builds

The from_ruby<const char *> specialization is unreliable in many ways,
as it's impossible to know if this is an array of characters or a single
char. It's better to use a proper string (std::string) when convering Ruby
strings into C/C++ land.
Clean up some clang compiler warnings

Mostly about losing precision from 64-bit unsigned long to int.