Models: Split models.py into several files

refs #7135

models.py is around 2000 lines long, and unwieldy to work with. Move it
to a models directory and split into several files. Most models get a
file, with some similar models grouped together in the same file. Use
init.py used to maintain the same import structure.

Add app_label to all models to work with split locations. Fix pep8
related changes, made protocol spaces and location purposes
alphabetical.
Clean up constants.py

Import models and forms, instead of individual classes. Move everything
inside PROTOCOL definition.
rsync: log verbosely to storage_service.log

Fixes #7234.
Add DisableableSelectWidget

Add custom widget that allows specific values in a Select widget to be
disabled.
Restrict Location purposes based on Space's protocol

refs #6939

Add ALLOWED_LOCATION_PURPOSE to each protocol Space with a whitelist of
what Location's purposes are allowed in that Space.  To enforce this,
disabled invalid purpose in the purpose dropdown of the LocationForm, and
enforce it in clean_purpose.
Duracloud: Stub out Space

refs #7133

Add empty Space, form, constants etc.
Duracloud: Add fields

refs #7133

Add fields to Duracloud Space. Update places to match: constant, forms,
migration, fixtures, test.
Duracloud: Add helpers

refs #7133

Add session with auth for use with all the other functions and
constructor for duraspace URL.
Duracloud: Add move from SS

refs #7133
Duracloud: Add move to SS

refs #7133
Duracloud: Move to SS supports globbing

refs #7133
Duracloud: Add browse

refs #7133
Duracloud: Add delete

refs #7133