Implemented `Channels` (`$.channel()`) which is a `LIFO` queue using `Deferreds` in lieu of a native yield, fixes #415