Adds the RequiresPrerequisites field into ProvidesCustomPrerequisite

and all the logic behind it.

This fixes #5958 
`info`, `hasPrerequisite`, and `owner` should also be made readonly to make it clear that they don't change after they are initialized.