Allow '0' as a DTMF tone.
Gruntfile.js: tell uglify to give ascii output

see https://github.com/onsip/SIP.js/issues/106#issuecomment-57349358

resolves #106
UA#onTransportError: don't try next transport if UA is closed

addresses #63
Gruntfile.js: uglify once, copy twice

This trims roughly 1 second from `grunt build`
Gruntfile.js: remove templates from banner string

Simplify browserify's postBundleCB
src/SIP.js: fix indentation
Remove explicit false check for DTMF tones.
Merge pull request #105 from Bat-o-matic/master

Allow '0' as a DTMF tone.
Logger, LoggerFactory: dedupe error/warn/log/debug definitions
Move Logger definition into LoggerFactory.js
LoggerFactory: iterate over `levels` to define error/warn/log/debug
simplify LoggerFactory#print
WebRTC.MediaHandler/MediaStreamManager: support multiple MediaStreams

MediaHandler:
  #addStream -> #addStreams: takes (Array of) MediaStream
  #render: renders only first local/remote stream (see #76)

MediaStreamManager:
  .render:
    * takes (Array of) MediaStream
    * renders only the first (see #76)

  #acquire:
    * returns a Promise of Array of MediaStream
    * mediaHint.stream is (Array of) MediaStream

  #release: takes (Array of) MediaStream
WebRTC: isSupported doesn't require getUserMedia

This allows the default MediaHandler to be used without capturing media.
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
Merge pull request #2 from onsip/master

update to master