Remove hack in uniforms

The `#[uniforms]` macro worked by accessing semi-private fields (fields that were public but hidden from docs).
This has been fixed by adding a `UniformsStorage` type and using it instead.