Added an in memory cache to all calls

The cache will be default on in future releases, but is opt-in for now. It will still be possible to disable the cache in future.

There will be documentation of this feature before it's default on.