Makes JSON loading of recipes work in an order-agnostic manner

Adds finalization function for recipes and moves book<->recipe interactions to it.

Adds call to recipe finalization to game::init_data()