Since (1) half of the disco uses check whether the feature in question
is supported, (2) the other half appears to not absolutely require
disco, and (3) disco needs to be explicitly included/required in order
to be supported, make disco completely optional.
Since half of the Settings functions check whether localStorage is
supported, adds the check to the other half to make localStorage
completely optional.
The function filter_special_chars does not have to throw a TypeError
when its argument text is null or undefined because (1) it can be argued
that neither of these two contains special characters and (2) it is much
more convenient to have the check in the function in question rather at
its multiple call sites.
Rename "stream" to "track" in RTC context plus fixes
Rename variables with "stream" in name which refer to JitsiTrack.
Rename TRACK ADDED/REMOVED events.
Try to reduce direct access to remoteTracks object.
Log warning message when track is overwritten.
When source-add and source-remove for the same SSRC arrive just one after
another, SSRC will not be removed as it didn't make it to the remote description
yet.
Before the change we were constructing lines to be removed based on SSRC
parameters values supplied in the notification. We want the client to simply
remove all lines related to the SSRC being removed as sometimes things get
out of sync. For example when Chrome adds 'default' mslabel or when we'll be
doing lipsync stream merging.