New block & item registry

This initially supports both string & integer ids. Integer id support will eventually be removed.

Integer ids are NOT used internally (only in backend unit tests to load test schematics). String ids are used whereever possible (notice that the Block class has checkers and selectors for nearby blocks for only string ids; integer ids cannot be used).

At the moment a Fallback registry (basically what was being used before with a `blocks.csv` and `items.csv`) is used for Bukkit, Canary, Forge, and Granite. Sponge has a native registry implementation.

Because string ids need to be consistent, some of these may be stuck on Fallback for a while.

- [ ] **Bukkit**: uses its own `Material` and does not really present a nice name other than their `Material` enum name, unless it does now?
- [ ] **Canary**: looks like `getMachineName()` returns the expected string ids, so this should be usable.
- [ ] **Forge**: No problem, just needs to be implemented. Will also support any mod blocks.
- [x] **Sponge**: Native implementation