Remove unused typedef
Setup all thread names in a single location

This also fixes the naming of systems threads such as the finalizer in
GDB on OS X.
Use per extension C-API locks and setup blacklist mechanism

This allows for using a per extension C-API lock instead of a global
lock. Each time an extension entry point is loaded (the Init_ function),
we setup a new lock index. We store this in the native method frame so
any methods defined will pick up the lock index.

This lock index is then stored for the native method and used when
locking around a C extension call. We use the value of 0 to indicate an
extension doesn't need locking if -Xcapi.lock is not enabled.

If -Xcapi.lock is enabled, each extension gets it's own lock through
this mechanism. Except for this general strategy, we also have a
blacklist which contains known bad extensions that always need a lock
around them. A known example of this is NKF, which tracks all it's
internal state in global C variables.

The blacklist mechanism allows for an easy way to add more troublesome
extensions without having to enabled the C-API lock for everything.
Revert "NKF extension is not thread safe, lock around it"

This reverts commit a39c8d8b0bd1ef8ef81b1ddb83c1c59385ad1002.

Since we now have a blacklist mechanism for bad extensions, we can
remove this locking and depend on the C-API locking mechanism.