Mask DTLS everywhere
UA: listen for 'unload' and call #stop()

This closes sessions when navigating away from the page/tab
test/spec/SpecUA.js: add failing test for #93
UA: allow configuration options 'stunServers' and 'turnServers' to be []

resolves #93
Utils: getPrefixedProperty: bind property to object
src/SIP.js: inject environment dependencies at require-time

Previously, environment dependencies such as WebSocket and RTCPeerConnection
were assumed to be present as global variables. This required modifying the
global scope to use SIP.js outside of the browser (i.e. PhantomJS or Node).

Now, src/SIP.js exports a function that takes an object specifying the
environment dependencies, so that they can be changed independently of the
global scope.

Backwards compatibility is preserved by introducing src/index.js as the
module's main entry point.  It requires src/SIP.js with an environment that
refers to the global scope in the same way that the previous commit did, so
that the build process produces a bundle that can be used in the conventional
way.
Split src/environment.js into Node/browser versions

src/environment_browser.js:
  Use global variables instead of requiring modules. This undoes the effects of
  the following commits, removing ~1KB from the bundle size:
    51003e3: Timers: require('timers') instead of directly using global
    8baf989: LoggerFactory: require('console') instead of directly using global
    b69fef8: Utils.Promise = global.Promise || require('promiscuous');

src/environment.js:
  Export a Node-compatible environment by extending the browser environment
  with the modules listed above.

Gruntfile.js: Tests polyfill Promise using promiscuous-browser.js