prepare for next development iteration

Implement Operations on Payload directly

Cache settings every time we get it from the server.

Fix synchronization.

If integrations were being initialized and a tracking method was called,
there was a race condition where events might be being replayed, and
getting added to the queue.

More efficient synchronization if integrations are initialized
prepare for release

* Fix race condition when calling integrations
* Let payloads directly implement operation
* Cache settings every time we get it
prepare for next development iteration