Refactor|Material: Use a layer mechanic to abstract access to detail and shiny state

Todo: Relocate this state to Material::Variant where it belongs.