compiler: Avoid adapters for compatible procedures

Previously we were checking that procedure signatures were exactly
identical and if not we created an adapter procedure cell. This isn't
strictly required - if all possible applications of the target signature
will transparently satisfy the current signature we can just use the
existing entry point and procedure cell. The fact we track procedure
types in the compiler frontend means it won't be possible to invoke the
procedure with the original, less restrictive signature.