Transports are not overwritten by default ones.

When creating a new ```Socket```, its default ```options``` are first set and then the user options are merged into this object using ```io.util.merge```.

This works great but when we want to force a transport on the client this way:

```javascript
io.connect(host, { "transports": ["jsonp-polling"] }
```

the ```options``` object will first be loaded with all the available transports and then the specified transports will be pushed into the array. The result: no matter what transports are specified on the call to ```io.connect```, all the available transports will be used to negotiate with the server.

If, instead, we first load the specified transports and only if no one was specified we add the available ones, transport selection behavior will be as expected.

This change will fix issues #349 and #429.