Cooking cleanup

Substantial code improvements, no new features.
Code was quite awful so much of it was rewritten.

Various bugfixes, especially involving ingredient validation and silicons (now they can't do stupid shit like deep frying their modules).

2 global vars (deepFriedEverything and foodNesting) are now checked in validation to determine whether to allow silliness like "deep fried captain's ID card"  or "cereal cereal cereal".
Both start out set to 1, and can be changed separately with an admin verb (configFood())

Tested and as far as I can tell, everything works like it should.