Propagate transport fail state (e.g. 500)

When the state 'TRANSPORT_FAILED' is raised it is propagated to the listener. This would allow to subscribe to a onError callback in javascript for example:
https://github.com/ging/licode/blob/master/erizo_controller/erizoJS/erizoJSController.js
```
wrtc.init( function (newStatus){
          var localSdp, answer;
          log.info("webrtc Addon status" + newStatus );
          if (newStatus === 102 && !sdpDelivered) {
            localSdp = wrtc.getLocalSdp();
            answer = getRoap(localSdp, roap);
            callback('callback', answer);
            sdpDelivered = true;

          }
          if (newStatus === 103) {
            callback('onReady');
          }
         if (newStatus === 103) {
            callback('onError');
          }
        });
```
Add the stream when ice negotiation finishes.

When it takes longer to send the 'ok' message over socket.io than it
takes to move the ice connection into the complete state, we end up
failing to notify everyone else in the room that there is another
stream.

Instead of waiting for the 'ok' message, create the stream when the ice
connection moves into the complete state. This eliminates the race
condition and ensures that a connected stream is always fully published.

The other side effect here is that the 'ok' message is no longer needed.
I left it for compatibility, but it can easily be removed.
Merge pull request #181 from jnoring/master

Memory leak fix
Merge pull request #175 from francoisTemasys/patch-1

Propagate transport fail state (e.g. 500)
Added timestamp to stats events
Merge pull request #177 from byronclark/eliminate-publish-race

Add the stream when ice negotiation finishes.