WIP: Issue 1386 add iframe channel

Follow on for #1437. Not fully ready for review, but feedback on the approach/RP API would be useful.
I feel like this module is beginning to be a bit unruly. Is there a way we can do something similar to what we do with the channel and say "if you are in such and such context, then use function/module X as your startup sequence"