Okay, so from what I can gather, you can't actually create a chain of shaders in OpenGL ES.
If my engine is designed so each mesh handles its own draw calls and selects its own shader program, but there are also elements which are common to all programs in the engine, I would either have to copy and paste those bits across, or make the engine create an entirely new shader program for every possible stack of programs I need.