src/Session.js: Replace 'referred' event with 'refer' handler helper

fixes #48

To migrate applications, replace:

  session.on('referred', referFollowed);

with:

  session.on('refer', session.followRefer(referFollowed));
src/WebRTC/MediaHandler.js: .render() doesn't throw if there's no hint
Session: on re-INVITE, send 488 instead of calling this.receiveReinvite

See https://github.com/onsip/SIP.js/issues/19#issuecomment-43887857
WebRTC.MediaHandler: don't pass constraints to peerConnection.addStream

This argument:

* was removed from the current draft WebRTC spec: https://goo.gl/yqgml3 (no. 16)
* was optional before it was removed: https://goo.gl/6n5v0I
* doesn't seem useful to applications

Also, this facilitates compatibility with WebRTC plugins (such as Temasys's)
that cause an error if the argument is passed.
Merge pull request #50 from joseph-onsip/rejectReinvite

Session: on re-INVITE, send 488 instead of calling this.receiveReinvite

fixes #19
Merge pull request #51 from joseph-onsip/no-addStream-constraints

WebRTC.MediaHandler: don't pass constraints to peerConnection.addStream
Merge pull request #49 from joseph-onsip/48

src/Session.js: Replace 'referred' event with 'refer' handler helper
WebRTC.MediaHandler.render() uses window.attachMediaStream if available

This provides basic compatibility with the Temasys WebRTC plugin.
Fixes the way utf8 string length is counted.

When sending SIP messages with "special characters" e.g. "äöü",
the "Content-Length" of the body needs to be correct. (Content-length
mis-match). Before this change, the byte count was wrong e.g.

"ä" => 1 instead of 2

I wrote a couple of examples in "SpecSIPMessage" and double checked them
with MRI (Ruby 2.0.0).

Thanks to [Tgr](http://stackoverflow.com/a/2848483/980524)
Merge pull request #54 from wpp/fix_utf8_string_length

Fixes the way utf8 string length is counted.
Complete the SIP-Message specs.

I noticed some specs in SpecSIPMessage were not yet implemented.
They assert what was written in the corresponding 'it' blocks, with one
exception:

if a header is neither in headers nor extraHeaders,

    .getHeaders()

returns an empty array, but the spec said it should return 'undefined'.
I think an emtpy array makes more sense though. Let me know if you
disagree and I'll change it.
Merge pull request #55 from wpp/missing_sip_message_specs

Complete the SIP-Message specs.
Allow mangling of SDP
Actually coerce turnServers to Arrays
TurnServer config test was testing bad things
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()