Prototype Named Peers and Combine Vendoring

This was meant to be separate, but I seem to have goofed up. :unamused: 

With regards to vendoring, this eliminates the separate need to install libtask. We compile it as part of making `libdpx` itself; then, when we link, we throw `libtask` into `libdpx.so` so that everything works. I see no regressions on 100 runs of the C, go-duplex, and pyduplex testsuites.

With regards to the prototype, we generate a UUID on making a new peer. Upon two peers connecting, the one that initiated the connection sends a 36-byte no-null-terminated UUID representing the initiating peer to the receiving peer, which will be returned with another 36-byte no-null-terminated UUID representing the receiving peer. At this point both will be setup.

There are methods for retrieving the UUID of the Peer and the UUID of remote peers.

At the moment, this does NOT contain an implementation for `Drop()` nor an implementation for dropping old connections (most likely bad connections) if a new connection comes on with the same UUID (de-duping).

Ref: progrium/duplex#5

cc: @progrium