Move protection metadata to a component.

Other changes: Meta's hashCode now only depends on the key (oops). Meta now has a toString method.