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.