cleaning up
refining sdp modification
AppRTC: Use WebSockets instead of Channel API.

With this change no messages are stored on GAE. Instead, they are stored on Collider.
GAE still keeps track of which users are connected to a given room.
CR comments. Loopback case now handled.
Delete roomid/clientid on WSS in case registration failed.
Use websocket for send if registration has occurred otherwise just POST.
CR comments.

Moved loopback code to its own file, and only serve it when needed.
Log websocket and websocket server errors.
Merge pull request #216 from tkchin/apprtc_collider

AppRTC: Use WebSockets instead of Channel API.
Specify collider host and port in the url
Merge pull request #227 from jiayliu/param

Specify collider host and port in the url
AppRTC new signaling model.

Updates AppRTC GAE server and web client to use the new signaling model.

Clients are required to register with GAE before sending messages, and will
receive a client id upon registration. The first client C1 sends all its
signaling messages to GAE. GAE will store the messages if the second client C2
has not registered yet, otherwise GAE will forward the messages to Collider,
which will then deliver the message over C2's websocket connection. When C2
registers it will receive all stored messages from C1. C2 sends all its
signaling messages through Collider. Each GAE registration is matched
with a BYE command to GAE on hangup.
Merge remote-tracking branch 'upstream/apprtc-collider' into apprtc-collider

Conflicts:
	samples/web/content/apprtc/apprtc.py
renaming findCodecPayloadType to getCodecPayloadType
Merge remote-tracking branch 'upstream/master'

Conflicts:
	samples/web/content/apprtc/apprtc.py
	samples/web/content/apprtc/index.html
	samples/web/content/apprtc/js/main.js
merging changes into sdputils.js signaling.js
style reformat
found a bug
adding removeCodecParam to global
defaulting opusfec to undefined
Remove some unnecessary state variables by using Promise.all() instead.