Added channel tapping facility
BREAKING CHANGE: MergedChannelValue no longer has an 'ix' field. This is because Channel.merge now supports dynamically adding new channels to the merged channel through the .add() method.
Merge branch 'master' of github.com:srikumarks/cspjs
BUGFIX: buffer would result in callbacks being called multiple
times because a callback once called wasn't being nulled out.
FEATURE: "buckets"

Given a channel, you can create another channel that behaves like
a bucket. Every time the bucket's "water level" falls below the
"low water mark", it will wait until the bucket is full again
before continuing to deliver values to takers.