Added mergeHaltL,R,Both, fixed termination behaviour of Exchange.run

@pchiusano I was trying to implement `wye.haltOnL`, `wye.haltOnR`, `wye.HaltOnAny/Both` combinator, but it seems it is impossible to implement them now given current signature of receiveL/R and awaitL/R. do you have some ideas perhaps? 

I just add them for `merge` for now, but would like to explore them in generic way. That will allow us to have the generic contract for wye that any wye will terminate after both sides terminate, but that could be altered  with way.haltOnL, haltOnR or haltOnAny combinators.