Use abort() on check_error() failure.

This makes it much easier to trace them down in a debugger.
Check GLSL program link status, for better error reporting.
Use GLSL 1.30-style attributes for the main shader.

This is in preparation for removing fixed-function use altogether,
for OpenGL 3.2+ core context support.
Make the initializing functions also drop fixed function usage.
Use VAOs to bind the VBOs.

Needed for OpenGL 3.2+ core context support. Also refactor a bit,
since the amount of boilerplate was getting over the top.
Use triangle strips instead of quads.

GL_QUADS is deprecated, seemingly, so rearrange things a bit so that
they become small triangle strips instead.
Use the GL_RED texture format instead of GL_LUMINANCE.

Seemingly GL_LUMINANCE is also deprecated; this actually decreases
support for GLES2 somewhat, but we need GLES3 anyway, so the net
loss shouldn't be too bad.
Remove GL_LUMINANCE in more places.

Causes problems with GL 3.2+ core contexts. Found by testing on ATI.
Stop using 1D textures.

1D textures were never part of GLES, so use 2D textures with Nx1 instead.
Supposedly they are just as fast (although it feels a bit less elegant).
Fix the roundoff test.

The wrong texture coordinates snuck in here when changing from fixed function.
Fix the widget display in the demo app.

The demo app forgot to set a projection matrix, and when Movit itself
stopped setting one, the widget display broke.
Add a utility library for downconverting to fp16.

ATI's drivers don't do this properly by themselves, so we want to
do it on our side. Adapted from some code I wrote a few years ago.
Store all twiddle factors as fp16.

Seemingly this isn't such a big deal after all, especially now that
we have proper fp16 roundoff also on ATI.
Do our own fp16 conversion in ResampleEffect.

This not only fixes issues with poor downconversion on ATI, but also
allows us to normalize while being aware of fp16 roundoff issues.
Seems to about cut the error in half in the HeavyResampleGetsSumRight
test, which as far as I can see would take us up to 10-bit accuracy.
Add utility functions for EffectChain to add inputs of different size from the output.
Add an effect to do re-slicing of the image, for overlap/discard.

This is another step on the way to making FFT convolutions useful.
Ignore libtool files in .gitignore.
Add support for fp16 and RG textures to FlatInput.
Handle texture non-bounce a bit better.

This allows us to ignore the texture bounce flag when reading from a
FlatInput, and also handles better the case where an YCbCrInput is read
from multiple times (it's now bounced, which should be better for speed,
I think).

The main motivation, however, is to be able to control sampler state
a bit less hackish in the future.
Formalize the notion of messing with sampler state.

This kills a lot of the assumptions that have been going around,
and should allow us to deal much better with the situation when
we have two or more inputs to an effect (where you basically can't
predict the sampler number used reliably); there's still an edge
case that's documented with a TODO, but this is generally much better.