Adds the RequiresPrerequisites field into ProvidesCustomPrerequisite

and all the logic behind it.

This fixes #5958 
Nit: there is a spelling mistake (Availible).  I suggest changing both of these variable names to be consistent, e.g. `hasRace` and `hasPrerequisite`.