Use stronger types for module metadata.

This introduces a `ReleaseStatus` and `License` type, both of which are now used by our modules. This ensures that what we do in the code matches what we have in the spec.

As a special case, ReleaseStatus can accept 'alpha' and 'beta' as aliases for 'development' and 'testing'. These are not supported by the current spec, but allow for the transition from older registry formats which may still use them.

Includes automated tests, and hand testing on current and historic CKAN data.