Null callback and cache

- Allow per-item callback to be passed through as null (with a longer term aim to make pass in an object rather than individual parameters.
- Maintain an in-memory cache of requests made, respecting the TTL of the Content API call