Refactor the logic for constructing crypt layers.
The key insights here are:
- That relay cell format and crypto protocols aren't orthogonal: Once we have GCO, it will require V1.
- That we only need the actual functions for layer construction to be generic; we don't need to proliferate generic parameters everywhere.
- That the circuit::handshake module already does most of what we want.
@jnewsome, this is the refactoring I had in mind based on !2045 (merged). What do you think?