Denormalize asset urls on models that use the asset field

* Adds a field for each asset field that is being used on a model.
As well as accessors that allow you to generate the url without querying the relation

* When a model changes it's asset selection the cache model is updated.

* When a asset instance file is changed if the filename has not changed only the version is incremented. If the filename (extension) changes queries to update all cached asset names as well.

* Tracks cache busting versions based on file or version changes on the assets model and in django cache.
Change all cached urls on versioned models
Start adding crops to assets.

* Urls are returned by the file accessor named for the crop. EI: obj.file.admin_url
* Crops are global and field based. Can be specified as a dictionary or a CropConfig object.
* Copper is an configurable object that handle the known crops and their creation.
* Asset model is configurable
* Asset types are configurable
* Signals are sent on file changes
Handle ValueError on import versioning manager
Actually crop images
Merge branch 'feature/assets-refactor' of github.com:ff0000/scarlet into feature/assets-refactor
Allow cropping to be async
Add title field
Allow celery instance to be configurable.
Create a to_dict alias for CropSpec
Add the start of the basic cropping views in the cms.
Use name instead of path for deleting
pass in PK for non-celery mode
Allow old celery method to be used.
Merge branch 'develop' into feature/assets-refactor
Always lookup a fresh asset in tasks if a pk is provided
Bump version