st/mesa: add support for layered framebuffers and consolidate code