Fix the rewrite rule that optimizes packing of string literals

This patch addresses two issues:

1) The particular rule was guarded under the wrong CPP conditional

   #if !defined(__GLASGOW_HASKELL__)
   ...
   #endif

   so GHC never even knew about it!

2) The rule didn't apply to ByteStrings that were implicitly packed
   via OverloadedStrings.

So now the RULE is properly guarded and applied earlier (or later,
depending how you look at it). Specifically, the rule changed from

  forall s.
  pack      (unpackCString# s) = inlinePerfomIO (unsafePackAddress s)
  -- defined in Data.ByteString.Char8

to

  forall s.
  packChars (unpackCString# s) = inlinePerfomIO (unsafePackAddress s)
  -- defined in Data.ByteString.Internal

To achieve this, the definition of 'unsafePackAddress' had to be
moved from the .Unsafe module to the .Internal module.