WebRTC.MediaHandler/MediaStreamManager: support multiple MediaStreams

MediaHandler:
  #addStream -> #addStreams: takes (Array of) MediaStream
  #render: renders only first local/remote stream (see #76)

MediaStreamManager:
  .render:
    * takes (Array of) MediaStream
    * renders only the first (see #76)

  #acquire:
    * returns a Promise of Array of MediaStream
    * mediaHint.stream is (Array of) MediaStream

  #release: takes (Array of) MediaStream
WebRTC: isSupported doesn't require getUserMedia

This allows the default MediaHandler to be used without capturing media.
Media Handler: renderHint local/remote is an (Array of) HTMLMediaElement

MediaStreamManager.render renders each MediaStream to the corresponding
HTMLMediaElement in the array, wrapping around if needed.

This removes one layer of nesting from the invite/accept mediaHint.

Note that <video>s no longer get muted if an <audio> is provided alongside.

Usage (compare with 4096365):

  var session = new SIP.UA().invite('welcome@onsip.com', {
    media: {
      render: {
        remote: [
          document.createElement('audio'), // included to demo array support
          document.createElement('video')
        ],
        local: document.createElement('video')
      }
    }
  });