Add a basic Channel implementation.

Same idea as channels from Go. Also add a select primitive that can
take a list of pairs of channels and code objects, and invokes the
code object for whichever channel has a value first. The select
implementation is an utter hack, but it will let us play with the
idea and API.

Both await and select can be used with promises, so you could use
a Promise.sleep(2) along with a channel in a select to time out if
the channel does not have a value within two seconds.