Remove recipe from component lookup when overwriting it.
Remove recipe from recipe_by_component lookup in recipe destructor.
Put recipe constructors in the cpp file.
Recipes and constructions have requirements as member not superclass.