[#13, #23] Add support for alternate recipes

* Added support for determining all the possibly ways to create a given item
* Added full unit test support