Fix race condition in ChannelMapper

Multiple goroutines ended up sharing the 'output' and other fields of
the ChannelMapper while running their JS functions. This caused errors
with GOMAXPROCS > 1.
Fixed this by refactoring JSRunner/JSServer down in Walrus so that the
single-task behavior can be expressed as a new syncRunner, with
ChannelMapper then just being a wrapper around it with no mutable state.
Updated go-couchbase to pick up a bug-fix

Occasionally you could get a "write to closed channel" panic on startup
due to misuse of the sync.Waiter API in go-couchbase's TapFeed.