This change allows the user to select a renderpass that will be displayed in the 3d viewport.
Added support for external renderers to extend the View3DShading struct. So that Blender has no need to know what feature the render engine wants to support. Note that the View3DShading is also available in the scene->display.shading although this is also supported, it does not make sense for render engines to put something here as it is really scene/workbench related.
Unresolved issues
Currently cycles assumes that it always needs to calculate the combined pass; it ignores the pass_flag in KernelFilm. We could optimize the
viewport rendering by adding this check. I propose to do this in a later patch as it influences final rendering.
