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
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
(Node) Use 'ws' module for WebSocket