Mark all but one of the detail funcs as `unsafe`

detail::pcre_version() is able to contain the unsafety of calling into C.

The detail functions that take a `*pcre` are assuming that it is a pointer
to a valid `pcre` object.

pcre_compile() assumes that the pattern C-string is nul-terminated. Also,
if it's passed a non-NULL `tableptr`, then the function would be assuming
that the `tableptr` is valid.

pcre_exec() assumes that the given `length` is at least as much as the
allocated length of the subject C-string.