Overrode send() specifically for SingletonChan.

SingletonChan can have a simplified version of send(), since only one send operation can succeed.
Also, the BufferedChan implementation had a potential race condition which could have allowed a second message through for SingletonChan.