Making methods always execute callbacks

The methods `getProfile` and `parseHash` receive callbacks but they not always call them. For `auth0-angular` this is required in order to know when the method has finished as we need to determine whether the user is logged or not.

 * When `getProfile` receives a falsy token (`null`, `''`, etc.) it calls the callback with error: `new Error('Invalid token'`
 * When `parseHash` cannot parse the hash it calls the errorCallback with `new Error('Invalid hash URL')`

As this is a breaking change a minor will be increased.

### Questions
 * [x] ~~Why do we have a different way of sending callbacks? callback(err, content) vs callback, errorCallback? What's the definitive way?~~ only one callback(err, content) is the way to go.
 * [x] There was a test called "Auth0 should not call the callback if the hash doesnt contain access_token". Why did we have a test for that?

### Checklist
 * [x] Make parseHash sync
 * [x] Implement:

  ```js
  if (auth0.inCallback()) {
    auth0.getProfile(window.location.hash, function (err, user) {
      // Your code here
    });
  }
  ```