Stop tracking src/Grammar/dist/Grammar.js

Instead, either build the grammar on the fly (in Node), or build it before browserify and bundle it in at that point. For this to work, a couple of changes were made to src/Grammar/src/Grammar.pegjs to allow the PEG output to be used without hacking it in Gruntfile.js:

* SIP is passed to `parse` in the `options` object instead of at require-time
* parsed objects are stored in `options.data` instead of returned

Other changes:

* PEG options moved from Gruntfile.js to src/Grammar/peg.json
* src/Grammar/index.js builds the grammar on the fly and exports it
  (browserify substitutes src/Grammar/dist/Grammar.js for src/Grammar/index.js)
* src/Grammar.js requires src/Grammar/index.js and wraps `parse` with the
  needed exception handling and return values
* Gruntfile.js: jshint ignores src/Grammar/dist/Grammar.js
* .gitignore .npmignore src/Grammar/dist/Grammar.js
* Gruntfile.js tasks: 'grammar' is run by 'quick' instead of 'travis'
* Gruntfile.js tasks: 'devel' runs 'quick' instead of 'browserify'
* package.json: move pegjs from devDependencies to dependencies
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
Merge pull request #108 from joseph-onsip/inject

Allow Dependency Injection in Node
(Node) Use 'ws' module for WebSocket
Utils: remove addPromise and callbacksLast
Bump version to 0.6.3
Add hackWssInTransport to UA configuration to fix Asterisk problems. Fixes #97
allow hackWssInTransport for anonymous registrations
Fix typo: too many )
WebRTC.MediaStreamManager: #acquire and #release are writable:true

This helps application code customize them.
src/Grammar/index.js: fix path to Grammar.pegjs

This allows require('sip.js') to work correctly from other modules.
WebRTC.MediaHandler: split stunServers into separate objects

This avoids the following sort of situation, which Firefox (as of 33.0.2) has
trouble with:

  var RTCPeerConnection =
    window.webkitRTCPeerConnection || window.mozRTCPeerConnection;

  new RTCPeerConnection({
      'iceServers': [{
          "url": ["stun:stun.l.google.com", "stun:stun2.l.google.com"]
      }]
  })

addresses #117
Allow Transport to be specified in the environment
Transport module exports its constructor