Restrict Location purposes based on Space's protocol

Not all Spaces support all purposes. Add the ability to restrict what purpose a Location can be based on the Space's protocol.

This requires #28