Fixed a bug in comment.

Realized that the third component of the VertexTexCoord is doing
*nothing*; the recipe code defines it as a vec3, but then ignores the
third parameter (it just uses the `x` and `y` parts).  Argh!  So for
now I set the third component to zero; I will try to change it to a
`vec2` in a future commit.
Switched from `Vec3` to `Vec2` for the texture.
Made the output window square (to make rendering circular).
Revised texure + color assignment to make output more interesting.

Now that it is more interesting, I can bear to look at it for more
than five seconds, so increased the timeout to 10 seconds.
Adapted example to use an instance name within the uniform block.

However, using this seems a little sketchy, since it sounds like the
rules for how one is to qualify the variable anmes when querying for
their indices differs between drivers (i.e. does one use
`BlobSettings.InnerColor`, as I have done here and seems to work on my
Mac OS X drivers, or does one use the instance name, as the recipe
says is required by the ATI Catalyst 10.8 drivers)
Revised shader link to return a Result instead of assuming success.
When link fails, return the builder as well to enable client recovery.
Checkpoint started work via mostly cut-and-paste on recipe "3".
Add first example from SB6 (aka SuperBible 6th ed).

Factored out common primary initialization routine: `init_common`.
Next step will be to rewrite other code to use `init_common`.
Refactored init code to go through `init_common`.

Revised `init_common` to be parameterized over init options.  Right
now the only options are `width` and `height`, but I expect that to be
generalized.
Factored the render code out from common event handling and redraw loop.
Refactored most code to use a unified event handler/timeout loop.

While testing this, found a problem in glsl_cookbook_1 that probably
surfaced back when I was trying to hack in VertexNormal data into
another cookbook example.
Added second example from SB6.  Got rid of many lint generated warnings.
Added SB6 to the Makefile.
Added initial example from chapter 3.
illustrating transfer of data from one stage to next.
Add example of output interface block.

To support this smoothly, I split the `ToGLSLType` into one basic
trait just for hooking into the GLSL language, and a subtrait
`ToGLSLType2` for interfacing with `VertexAttribPointerRTTI` via
`Packed<T>`.
Simplify Shader impl by assuming that they follow (hdr,lines) structure.

Perhaps it is bad to build in such assumptions; should revisit later.
Added tesselation control and eval shader example from chap3 to mix.

I had to break down at this point and grab the source code for sb6,
because I could not figure out why the code wasn't running, and it was
in fact (AFAICT) because they failed to mention that one needs to
switch from `gl::DrawArrays(gl::TRIANGLES, ...)` to
`gl::DrawArrays(gl::PATCHES, ...)` in order for the example to work.
Sigh.

Abstracted out a Shader trait and a ShaderBuilder::compile routine.
Still wondering if the tight coupling to the lines-vector rep is a
mistake here; maybe I would be better off with generating impls via a
macro here rather than using template-and-hook via trait default
methods.

Also, I couldn't figure out how to generalize the handling of VS_OUT
in gl_superbible_3 to work with the tesselation control/eval shaders.
I kept getting errors about how the output from the vertex shader had
to be read in the tesselation control shader, for example.  (So you
really do need to pass data through linearly at each stage of the
graphics pipeline.)  So instead I just cut-and-pasted a new
gl_superbible_4 variant.  Presumably I'll figure out a good way to
abstract these common routines the same way I eventually factored out
`WindowOpts::init`.