Refer to `global` instead of `window`

Change .jshintrc to have "node":true instead of "browser":true. This makes it
more difficult to accidentally globally reference non-ECMAScript globals, as
was done with `URL` in 40963655c6d75b6b44fd396153db3b458ec04da4

Note: browserify ensures that bundles use `window` for `global`:

  https://github.com/substack/browserify-handbook/tree/12f07d9767192d3f26510fbf2d79f3cdf13e18b6#global

see #94
Utils.Promise = global.Promise || require('promiscuous');

package.json has a couple of changes that limit this dependency's impact:

1.  promiscuous is listed in "optionalDependencies", which allows `npm install`
    to succeed even if promiscuous is unavailable. Note that in this case,
    `require('sip.js')` will fail in Node environments that don't provide
    global.Promise, so Node users should ensure that it is available.

2.  The "browser" field is used to specify that browserify should use a browser
    build of promiscuous, which is now tracked in the ./src/polyfills
    directory. This ensures that the SIP.js browser build does not depend on
    the promiscuous module being installed, and helps keep the minified build
    small (adding only 1185 bytes). For details on the "browser" field, see:

    https://github.com/substack/browserify-handbook/blob/12f07d9767192d3f26510fbf2d79f3cdf13e18b6

See also:

  https://github.com/onsip/SIP.js/issues/94#issuecomment-55414940
Utils: rename var Promise -> promise

This avoids a travis error: [W079] Redefinition of 'Promise'.
Timers: require('timers') instead of directly using global

browserify provides this for the bundle:

  https://github.com/substack/browserify-handbook/tree/12f07d9767192d3f26510fbf2d79f3cdf13e18b6#builtins
git rm -r test/polyfills/
LoggerFactory: require('console') instead of directly using global

browserify uses src/polyfills/console.js in order to avoid adding 10k to the
minified build, which is what would happen if console-browserify were used:

https://github.com/substack/browserify-handbook/tree/12f07d9767192d3f26510fbf2d79f3cdf13e18b6#builtins
Transport: require('ws') instead of directly using global

This allows SIP.js to be used in Node without manually setting global.WebSocket

As with the promiscuous module, ws is not necessary for `npm install` and `grunt` to succeed.