[WIP] Dynamic Recipes

This provides the implementation side to GlowstoneMC/Glowkit#34. It makes banners, with others yet to come, craftable without creating countless entries in the static file.

Recipes to implement:
- [x] Banners
  - [x] Layer adding
  - [x] Duplication
- [x] Fireworks - Requires #506 for implementation
  - [x] Stars creation/editing
  - [x] Firework creation
- [x] Book duplication
- [x] Tool/Armor repair
- [x] Armor dyeing - Requires #496 for implementation
- [ ] Maps
  - [ ] Map zooming
  - [x] Map duplication
Would this really be any more productive? All Arrays.asList does is wrap the array created with the args. This is arguably more readable as well.