Session emits "dtmf" event with request and DTMF object

also, Dialog.sendRequest returns the sent request
Don't modify extra headers passed in from application.

fixes #56
Fix typo: 'possition' -> 'position'
Merge pull request #58 from joseph-onsip/sliceExtraHeaders

Don't modify extra headers passed in from application.
Session.js: accept() calls mediaHandler.render()
bower.json: bump version number to 0.6.0
package.json: add 'main: "dist/sip.js",'
package.json: bump version number to 0.6.0
package.json: change name to "sip.js", update Gruntfile.js accordingly

This disobeys an NPM tip: https://www.npmjs.org/doc/package.json.html#name
but avoids naming conflicts with https://www.npmjs.org/package/sip
Add .npmignore with everything from .gitignore except dist/ files
Fire userMediaRequest asynchronously
OMG WHITESPACE!!!1!
Allow listeners to be invoked with more than one argument
Comments for edit reason
Merge pull request #61 from cPu1/master

Allow event handlers to be invoked with a variable no. of arguments
Jasmine 2.0 upgrade, no more random Travis failures (hopefully)
Move (set/clear)(Timeout/Interval) into Timers module.

See https://github.com/joseph-onsip/SIP.js/commit/2510347d7a29c85191c4d78aaf2cbbc6e2261187
Subscription.js/Transactions.js: Bind timer callbacks

This removes unnecessary anonymous functions.
Grammar: remove trailing whitespace
Use require() and browserify to organize dependencies and compilation.

This is a squashed cherry-pick of the first three commits of
https://github.com/onsip/SIP.js/pull/30, plus a small fix to the Timers module,
and slight updates to package.json and .npmignore.

The reason this isn't in separate commits is that the first three didn't work
individually. Squashing them together allows:

- the automated tests to pass
- <script src="dist/sip.js"></script> to work as usual
- a Node.js phone to be tested as follows:

    npm install ws
    node
    WebSocket = require('ws')
    var SIP = require('./.');
    var ua = new SIP.UA({traceSip: true});
    ua.message('welcome@junctionnetworks.com', 'Node says hi!');

For completeness, unsquashed commit messages are listed below:

1: Use require() and browserify to organize dependencies and compilation.

Conflicts:
	Gruntfile.js
	package.json
	src/tail.js

Cherry-picked from:
  https://github.com/joseph-onsip/SIP.js/commit/df33833c9db8ace3e72b38a5e5ecc16c863baff8

2: Clean up module dependencies.

- LoggerFactory does not depend on SIP
- Constants depends only on SIP.name and SIP.version
- Exceptions does not depend on SIP
- Timers does not depend on SIP
- Transport depends on window
- SIP.MediaHandler depends on EventEmitter, not SIP
- WebRTC depends on Utils, not SIP
- Hacks depends on window, not SIP
- DigestAuthentication depends on Utils, not SIP

Conflicts:
	src/Timers.js
	src/WebRTC.js

Cherry-picked from:
  https://github.com/joseph-onsip/SIP.js/commit/9af96e907f839adf926ab757cca2b7923b72ab9a

3: Grammar module depends on SIP

Cherry-picked from:
  https://github.com/joseph-onsip/SIP.js/commit/3e0c165d5f1b687b4bd6a989e03be584fb1e0259

4: Timers module depends on window

See:
  https://github.com/joseph-onsip/SIP.js/commit/2510347d7a29c85191c4d78aaf2cbbc6e2261187#diff-7f75ad1c8b0a978a180c50fe4c649e8bL25

5: package.json: set "main": "src/SIP.js"

Now that our src/ files are modules, we don't have to compile the module before
require()ing it.

6: .npmignore dist/sip*

There's no need for `npm install` to bring in dist/ files. Leave that to bower.