ServerContext: dedupe progress/accept/reject/reply methods
dedupe REASON_PHRASE fallback logic into SIP.Utils.getReasonPhrase()
dedupe Status-Line generation into SIP.Utils.buildStatusLine()
dedupe reason-value generation into SIP.Utils.getReasonHeaderValue()
dedupe cancel code-check/reason-build into SIP.Utils.getCancelReason()
tests use promiscuous 0.6.0 for Promise

curl https://raw.githubusercontent.com/RubenVerborgh/promiscuous/dist/promiscuous-browser.js > test/polyfills/promiscuous-browser.js
WebRTC.getUserMedia returns a Promise if only constraints are given
MediaStreamManager#acquire takes mediaHint, returns Promise
WebRTC.MediaHandler#getDescription takes mediaHint, returns Promise
WebRTC.MediaHandler#setDescription takes sdp, returns Promise