BUG: strengthen typing in get_c_string, fix StringHashTable segfault
Start with util.pxd, we can tighten the arg from "object" to "str" and simplify it a bit.  Tracking down the places where get_c_string is used, the main one is in StringHashTable, where in `set_item` it is currently used incorrectly.  The test added by this PR segfaults in master.

@TomAugspurger it looks like StringHashTable has relatively light testing.  Should we be using it for StringArray?
lgtm. not sure why the 36 build is failing though. > not sure why the 36 build is failing though.

Looks like we're passing `np.str_` instead of `str` somewhere.  Haven't looked into it closer than that so far (kinda hoping we bump numpy minversion and it fixes itself) So it isnt a numpy-version problem, just a slow test that is only getting run in that build.  We're passing a np.str_ object instead of just a str.  This is tough to check for because `isinstance(some_np_str, str)` is True lgtm. thanks @jbrockmendel 