Inventory and output are now created programatically

- Programatically create inventory and output grid
- Separate grid and ingredients in different namespaces
- Fix bug of not detaching an ingredient when its attached
to another grid.
- Add ctjs.craftingTable.getIngredientAt(index) method. This
method will be useful for the matching algorithm.