Adds a reset method with an optional completionBlock

When a user signs out of the app, we call `-reset`. However, if we immediately set a new `distinctId` that value is subsequently overwritten since `-reset` dispatches its work asynchronously.

Usage:

```
[[Mixpanel sharedInstance] resetWithCompletion:^{
    [[Mixpanel sharedInstance] identify:@"some id"];
}];
```