Apply Channel

fn apply_channel<A, B>(
  f: Session<ReceiveChannel<A, B>>,
  a: Session<A>,
) -> Session<B>

Example:

    let p1: Session<ReceiveValue<String, End>> = todo!();

    let p2: Session<
      ReceiveChannel<ReceiveValue<String, End>, SendValue<u64, End>>,
    > = todo!();

    let p3: Session<SendValue<u64, End>> = apply_channel(p2, p1);