Replaces the PackageBuilder (fix deprecate merge)

The Package builder monad from Code.Generating will probably be moved
or deleted in the future. Furthermore as it is old code from a period
with less experience I don't like it any more. Therefore it is replaced
by a Writer monad over lists of modules (with some extra information),
which are all defined in Code.Builder.

As a result of the rewrite several differences showed up between the
reference and the output. This was due to merging of the deprecated
and normal versions of category modules. This is fixed by adding
"Compatibility" to the modules with deprecated contents.
Adds -Werror, changes -fno-warns

There shouldn't be any duplicate exports after the previous fix, so that
warning is reabled. The unused-imports is needed for some modules where
Foreig.C.Types is imported but not used as it only defines functions of
type IO (). These warnings can be (I think) safely ignored. All the
other warnings indicate that something has gone wrong and should
therefore be treated as errors.
Rewrites the building of module internals

The modules are now build out of parts. These parts can then later be
used to generate the real code.
Renames execRawPBuiler and unwrapNameBuilder

execRawPBuilder -> runBuilder
unwrapNameBuilder -> unwrapNameM
As these names are more suitable.
Merge branch 'newbuilders' into develop