[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
Why are you using a list? Would it make sense to simply use an array? (That's maybe a dumb question)