User config files load, but:
- We don't error if there's a mismatch (i.e. user file has feature base doesn't)
- We can pass blank outputs to features instead of just skipping the feature entirely if it has no inputs/outputs
- Still need to completely remove rotate_with_direction in favor of using i32 with rotate
- User configs that derive from default configurations don't match correctly, and should use UUID matching instead of identifier matching anyways.
Tests for all of this would be nice.