Initial re-INVITE changes

Basic sanity testing now looking promising.  Can only really handle
incoming re-INVITEs so far - no publicly exposed methods for sending.
Also does not validate stream changes in the incoming re-INVITE.
Initial hold/resume functionality

Additional testing still needed, but basic unit test of hold/resume
functionality now working.
Still to do:
- Validate that remote resume is returning to the previously
agreed stream configuration.
- Add generic renegotiation methods/events.
Added two-way hold unit test
Correctly set local hold state on resume
Work towards general session renegotiation

Lots more work towards re-invite/renegotiation implementation, including
some fixes/improvements to the special case of hold/resume.

Still todo:
- Add renegotiate() API method
- Stream renegotiation unit testing
- Client testing, including non-SDK SIP endpoints
Completing renegotiate

- Added renegotiate API method.
- Added audio->video->audio unit test.

Renegotiation should now be functionally complete, just needs some more
testing before merging into master.
Minor fixes

- Fix exception when streamConfig.video is null.
- Don't get user media on hold/resume to work around apparent Chrome 28
  issue - audio not working after resume.