WebRTC.MediaHandler#getDescription: call #render() after stream is added

fixes #92
Moved wsServerReconnectionTimeout/Max Reconnection moved from internal to configurable variables; credit to SD
WebRTC.MediaHandler#createOfferOrAnswer: var pc = self.peerConnection;
WebRTC.MediaHandler#createOfferOrAnswer: promisify setting local sdp
define Utils.defer()
WebRTC.MediaHandler#createOfferOrAnswer: promisify onSetLocalDescriptionSuccess
WebRTC.MediaHandler#createOfferOrAnswer: define handlers in .then()
WebRTC.MediaHandler#createOfferOrAnswer: return a promise
WebRTC.MediaHandler: use a deferred for onIceCompleted

WebRTC.MediaHandler: emit 'iceComplete' outside of createOfferOrAnswer
WebRTC.MediaStreamManager#acquire: flatten code by using a deferred
(Non)InviteClientTransaction#receiveResponse: return a promise
(Non)InviteClientTransaction#receiveResponse: use defer() to return once
Utils#defer: rename var 'o' to 'deferred'
UA configuration: add 'authenticationFactory' parameter

This works like the 'mediaHandlerFactory' parameter, enabling custom
authentication schemes as described here:

  https://groups.google.com/forum/#!msg/sip_js/PWm7_WqdsSQ/TT4o8ZTySwAJ
Move Session#refer options logic into Utils#getReferInfo
Define UA#refer
Move Session#receiveRequest REFER logic into Utils#receiveRefer
UA: emit 'refer' when an out-of-dialog REFER is received. TODO: NOTIFY