message: Clean up setOptions API
  This moves the concern of whether or not to emit an event to be internal to setOptions. No need for the calling functions to make that decision.
diff: @@ -559,7 +559,7 @@ var RequireAuthorizationApplication = Application.extend({
  accessSecret: results.oauth_token_secret,
  sessionHandle: results.oauth_session_handle,
  tokenExpiry: exp.toString()
  - }, false);
  + });
  resolve({ results: results });
  }
  callback && callback.apply(callback, arguments);
  @@ -581,7 +581,7 @@ var RequireAuthorizationApplication = Application.extend({
  accessSecret: results.oauth_token_secret,
  sessionHandle: results.oauth_session_handle,
  tokenExpiry: exp.toString()
  - }, true);
  + });
  resolve({ results: results });
  }
  @@ -593,11 +593,12 @@ var RequireAuthorizationApplication = Application.extend({
  var q = Object.assign({}, { oauth_token: requestToken }, other);
  return this.options.baseUrl + this.options.authorizeUrl + '?' + querystring.stringify(q);
  },
  - setOptions: function(options, emitThisEvent) {
  + setOptions: function(options) {
  logger.debug("Setting options");
  - this.options = Object.assign(this.options, options);
  - if (emitThisEvent && this.eventEmitter) {
  + if (this.options.accessToken) {
  + if (options.accessToken !== this.options.accessToken) {
  + if (this.eventEmitter) {
  logger.debug("Emitting event");
  try {
  this.eventEmitter.emit('xeroTokenUpdate', options);
  @@ -606,6 +607,10 @@ var RequireAuthorizationApplication = Application.extend({
  }
  }
  }
  + }
  +
  + this.options = Object.assign(this.options, options);
  + }
  });
  