Started documenting CallableCookOneDish & fixed the deadlock problem

The deadlock problem could have occured if a callableCookOneDish object
aquired half of its tools while another callableCookOneDish object
aquired the other half while still needing the first half.
If there are no tools in the warehouse to spare this could result in a
deadlock.
I fixed it by having the first object lock the warehouse and try to
aquire all the tools if it finds some of them are missing then it will
return them and wait for a notifyall for the warehouse object.