Duplex handle creation is a mess
Currently, a duplex handle is generated by creating two separate handles and then mashing them together. I strongly suspect that we can clean this up a bunch by factoring out the necessary Handle__
code so that duplex handle creation can call it independently.