design per-input channel config modal (issue #49) and implement topic label (issue #13)
'hook up ChannelConfig GUI to NJClient (issue #25)'

* now allows zero local channels for creating stereo pair if only two inputs
* added two SortedSets holding available input channels for ChannelConfig GUI
* added IsInitialized flag for destroying corrupted storage during init phase
* removed LinJam::GetOrAddRemoteUser() and LinJam::GetOrAddRemoteChannel() helpers
* added CreateLocalChannel() , InstantiateLocalChannel() , TrimStereoChannelName() ,
        GetNumActiveChannels() , GetNumVacantChannels() , GetChannelDisplayName helpers
* factored channel group resizing out of Mixer and into Channels
* minor adjustments to mixer layout ready for alpha fading hidden remotes
implement faux-stereo channel feature (issue #50)

* refactored LinJamConfig::sanityCheck() to be general for all channels
* removed default local channel
* factored local channel sanity check into it own general method
* added GetRemoteUserName() and wrapped output in CharPointer_UTF8() (issue #35)
implement rename local channels (issue #23)

* local channels keys are now based on channel index (== source_n)
* handles duplicate channel names (issue #46)
* added 'channel-name' key to storage (issue #43)
* added GetChannelName() method
* added IsConfiguredChannel() method
* added makeChannelId() method
* removed IsRoomFull() method
* removed encodeChannelId() , decodeUserId() , and decodeChannelId() methods
* removed GetLocalChannelDisplayName() and GetChannelDisplayName() methods
* removed GetLocalChannelIdx() , GetRemoteUserIdx() , and GetRemoteChannelIdx() methods
* merged CreateLocalChannel() and InstantiateLocalChannel() into AddLocalChannel()
* split the Trace defines into per-class files
* refactored LocalChannel specific button event handling into subclass
implement existing local channel config update (issue #51)

* local channels are added/removed/configured implicitly via config tree state
* added LinJamConfig::makeChannelId() method
* added LinJamConfig::newChannel() and LinJamConfig::setChannel() methods
* added Mixer removeChannel() method
* converted constants classes into namespaces and removed Constants.cpp

(slightly buggy)
transitional
implement faux-stereo pan and misc polishing/bugfixes for feature #25

* reverted local channels implicit addition/removal via config tree state
* added LinJam::ComputeFauxStereoPan() method
* added LinJam::GetMonoPairSourceN() and LinJam::GetStereoPairSourceN() methods
* added CONFIG_TYPES dictionary and LinJamConfig::restoreVarTypeInfo() method
* added LinJamConfig::makeHostId() method
* added LinJamConfig::addChannel() method
* added LinJamConfig::destroyChannel() method
* added LinJamConfig::setRemoteStereo() method
* added LinJamConfig::trimStereoName() and LinJamConfig::setStereo() methods
* added LinJamConfig::getUserMasterChannel() method
* added LinJamConfig::getChannelByName() method
* removed Channels::broughtToFront() method
implement stereo vu meters and bugfixes for faux-stereo pan

* vu meters and channel names now update asynchronously via storage tree values
* master VU is only approximate
* added vu params to channels store and VU_LEFT_ID and VU_RIGHT_ID constants
* added LinJamConfig::makeStereoName() method
* added LinJam::UpdateLoopProgress() , UpdateVuMeters() , UpdateRecordingTime() methods
implemet local channel mono<->stereo conversion and improve stereo VUs accuracy

* now allows multiple channels per input source
* added LinJam::GetNumInputChannels() method
* added LinJam::AddDecibels() , ComputePannedVus() , ScalePannedMonoVus() methods
* removed LinJam::GetNumActiveLocalChannels() method
* removed LinJam::GetMonoPairSourceN() and GetStereoPairSourceN() methods
factor windows audio init into LinJam class (issue #27)

* added many audio config constants / properties
* removed audioconfig.cpp , audioconfig.h , and linjamwin.ini
* removed unused LinJamConfig Value holders (issue #33)
* factored unnecessary config sanity checks into Trace class