Better support for unbounded scopes.

Implements the general approach agreed on in #76.

Changes:
- Remove the getSupportedScopes() method.
- Add a scopeExists() method to the scope interface, scope storage interface, scope util class, memory storage. The $scope passed is always a space-separated string.
- For consistency with the rest of the system (scopeExists(), any storage method that accepts $scope), I've removed the ability for checkScope() to accept arrays. It now only deals with space-separated strings. Supporting dual forms is also hard to document. We should pick one, and stick with it through the codebase.