Feature/caching

Models are configurable with a cache option:

    createModel(resourceName, {
        cache:
            enabled: boolean
            storage: object?
            timeToLive: integer?
    })