Optimization: pass Food by pointer
Worked around a bug, and improved performance
Fixed bug with orthogonality check (all were failing)
Added check that drops incomplete recipes before even calculating them
Handle SIGTERM and SIGINT + print stats on exit