Label threads using ByteStrings instead of Strings

This is hopefully more efficient because we avoid going via the
expensive looking withEncodedCString which is used by the standard
labelThread:

http://hackage.haskell.org/package/base-4.6.0.1/docs/src/GHC-Foreign.html#withEncodedCString