[cage] change UNUSED(arg) to SHIM in the decl [GH #1052]

UNUSED just adds code to please the compiler unused warnings, but we should
really declare the args as such with SHIM()
We need UNUSED only in .pmc declaration because we have no control over
SHIM, the pmc2c compiler does it for us there.

Also do not return unused values, rather cast to (void) and
strip PARROT_WARN_UNUSED_RESULT attributes on them.

UNUSED Exceptions: io vtable methods keep the 2nd handle arg. The C abi defines
caller cleanup, so we could declare some of them with empty args, but for
the sake of API sanity we accept at least 2 args.

Headerizer does not grok #ifdef (yet), so we need to UNUSED some args.
[cage] remove redundant duplicate declarations

seen with --cage