Allow environment-specific dependencies to be given at require()-time

This means that the following works in node:

  var SIP = require('./src/SIP.js')({
    WebSocket: require('ws')
  });
  var ua = new SIP.UA({traceSip: true});
  ua.message('user@domain.com', 'hi from node');

with the following caveats:

  1. SIP.version === '<%= pkg.version %>'
  2. SIP.name === '<%= pkg.title %>'
     (...and therefore...)
  3. ua.configuration.userAgentString === '<%= pkg.title %>/<%= pkg.version %>'

since the substitution is done by grunt-browserify in the postBundleCB