If the requested url does not have a protocol (http/https) specified, the error given is a bit cryptic. While it is a bit of an edge case, it has actually happened to me on numerous occasions.
Currently, the following is thrown:

```
error checking auth TypeError: Cannot read property 'slice' of null
    at dispatchHttpRequest (.../node_modules/axios/lib/adapters/http.js:84:37)
    at httpAdapter (.../node_modules/axios/lib/adapters/http.js:19:10)
    at dispatchRequest (.../node_modules/axios/lib/core/dispatchRequest.js:52:10)
    at process._tickCallback (internal/process/next_tick.js:103:7)
```

The reason I'm opening a issue rather than a pull request is that I see two different ways of handling it and would like @mzabriskie to chime in.
1. Check explicitly for `parsed.protocol` in the httpAdapter and throw an error if it doesn't exist.
2. Default to using `http://` and continue on as usual

Love axios, long time user, let me know what you think and I can make a PR.

lib/adapters/http.js
return reject(createError(
          'Data after transformation must be a string, an ArrayBuffer, or a Stream',
          config
        ));
      }
      
      headers['Content-Length'] = data.length;
    }
    
    var auth = undefined;
    if (config.auth) {
      var username = config.auth.username || '';
      var password = config.auth.password || '';
      auth = username + ':' + password;
    }
    
    var parsed = url.parse(config.url);
    if (!auth && parsed.auth) {
      var urlAuth = parsed.auth.split(':');
      var urlUsername = urlAuth[0] || '';
      var urlPassword = urlAuth[1] || '';
      auth = urlUsername + ':' + urlPassword;
    }
    if (auth) {
      delete headers.Authorization;
    }
    var isHttps = parsed.protocol === 'https:';
    var agent = isHttps ? config.httpsAgent : config.httpAgent;
    var options = {
      hostname: parsed.hostname,