Add trustworthy pragmas to various safe builder modules and also make
internal modules that expose ByteString constructors unsafe.
Merge pull request #4 from scslab/trust

Add trustworthy pragmas to various safe builder modules.
Add a new ShortByteString type

It has lower memory overhead than ByteString but has few operations.
It is designed for storing lots of small strings in memory.
Add a builder primitive for ShortByteString
Unbreak the testsuite
Add tests for the ShortByteString
Port performance patches from private bytestring branch

- simplify chunk insertion (strict bytestrings instead of
  lazy-byestring-continuations)

- bytestring chunk insertion is half as fast as on blaze-builder. This
  performance loss can be attributed completely to the change from using
  'inlinePerformIO' to using 'unsafePerformIO' in the conversion from builders
  to lazy bytestrings. This slowdown can be circumvented by executing
  buildersin the IO monad, where no unsafePerformIO is necessary.

- rewrite some of the primitive builders to a non-recursive form to avoid
  unnecessary closure allocation on the fast path
Use 'unsafeDupablePerformIO' instead of 'unsafePerformIO'.

This increases the performance of bytestring chunk insertion by 20%.
Remove unnecessary code for chunked and variable-length encoding.
Remove unneeded and/or commented-out code.
Update builder tests and setup 'hpc'.

All tests pass and code-coverage looks good :-)
Finish renaming 'Bounded/FixedEncoding ~> Bounded/FixedPrim'.

  FE ~> FP
  BE ~> BP
  fixedEncoding   ~> fixedPrim
  boundedEncoding ~> boundedPrim
Make benchmarks compile and install again.
Compare integer encoding and bytestring insertion performance to blaze-builder.
Implement fast decimal integer encoding.

Compared to 'blaze-textual' and the Integer 'Show' instance the 'integerDec'
builder is 2x faster for small integers that fit into a machine word, and it
is 4x faster for large integers. This performance improvement speeds-up the
encoding performance of libraries like 'aeson' that use 'Integer's to
represent numbers.
Use 'integer-simple' flag analogous to the 'text' library.
Make Data.ByteString.Short work on several ghc versions

Older GHC do not keep the length of the ByteArray# in a useful way so
we have to store it separately.

Adjust the implementations to use primop wrappers with ST or IO rather
than direct primops and State#.

Check core for the important functions and made a few adjustments.
Fix warnings for different GHC versions, including 7.8
Remove dubious and unnecessary use of unsafeCoerce

It's not needed to implement Float -> Word32.
Also, include the name of tests in testBoundedProperty.