Add Xmit status bar button

The transmit button controls whether or not to upload local audio to the
server.  Turning off xmit mutes the user so other users cannot hear her.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Remove ChannelTree broadcast check state

Each local channel has a broadcast state which controls whether or not
the audio is uploaded to the server.  There is now a global broadcast
button ("Xmit") to replace per-channel broadcast checkboxes.

Remove the ChannelTree broadcast checkboxes because they can be
confusing and are no longer needed.  Currently only one local channel is
supported so there is no disadvantage to exclusively using the global
broadcast button.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Add Metronome status bar button

Introduce a metronome on/off status bar button in order to simplify the
ChannelTreeWidget.  The metronome was previously represented as a local
channel but to reduce confusion provide just one checkable button to
mute/unmute the metronome in the status bar.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Remove ChannelTree metronome local channel

The main window now has a metronome on/off button so it's no longer
necessary to represent the metronome as a local channel.  This should
make the user interface easier to understand.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Ensure debug logging is unbuffered on Windows

Since Windows does not support line-buffering we should use unbuffered
output.  This ensures that debug output is visible immediately rather
than held in a buffer for an unspecified amount of time.

The alternative workaround is to sprinkle fflush(3) calls everywhere.
It's more efficient but ugly.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Fix QSysInfo::WordSize type size_t -> int

Since QSysInfo::WordSize is an enum the type is int.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Move NJClient::Disconnect() m_downloads.Empty()

Clearing m_downloads requires first deleting each RemoteDownload and
then emptying the list itself.  Make these two steps adjacent in the
source code to eliminate the risk of accessing a freed RemoteDownload
before m_downloads.Empty() is called.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>