Make CmmParse abstract
Don't duplicate decls unnecessarily in the environment

In loopDecls, as far as I can see the globalDecls will always
already be in the environment, so don't add them again.
Small refactoring in StgCmmExtCode
In CMM, only allow foreign calls to labels, not arbitrary expressions

I'm not sure if we want to make this change permanently, but for now it
fixes the unreg build.

I've also removed some redundant special-case code that generated
prototypes for foreign functions. The standard pprTempAndExternDecls
now generates them.