* ALSA handles stereo-only devices now * Microphone samples are asynchronously pushed up by the lower layers rather than being polled by the upper layers. On Mac, the high-precision realtime thread is used to push microphone samples. This fixes a bug with short reads and a bug with inaccurate polling. On ALSA, there is a LoopingCall in the ALSA driver that polls at an appropriate interval. * The encoder base class has a buffer to store up the appropriate bytes of microphone data to make up a media frame. This buffer gets flushed when the audio device closes or reopens. * The audio device gets closed and reopened during important state transitions, namely call start and call end. This fixes the "That jerk!" bug, in which you could say "I have to call that jerk!" immediately before a call connected and then the jerk in question would hear you say it when he answered. * Remove some extremely detailed diags that measured the number of packets sent per second and the number of packets received per second. Those diags have served well and are now retired. * The Mac audio loopback test is rewritten, and a bug involving closing the loopback test versus closing a phone call is fixed. * The discovery/selection of the appropriate audio device is done before the construction of the Phone object. This makes the other platforms' initialization process parallel to the Mac initialization process, and also I prefer this approach. (The other approach is that you construct the Phone object and then it discovers/selects the audio device itself.) * Plays ringing sounds for inbound and outbound ringing sounds * New audio_device option for selecting a different ALSA or OSS device * New playout algorithm