Record in Argument whether a buffer is read or written inside a GPU loop
Extend Load and Store nodes to accept multiple indices.

All existing code generators still use one single index which is calculated
from the original coordinates during storage flattening. Multiple indices are
used by the OpenGL backend to generate proper texture loads using texture2D(x,y).
Add OpenGL runtime for executing halide filters as GLSL pixel shaders.
Add code generator for OpenGL and enable corresponding target.

Also add a new loop type named "Kernel". Kernel loops are semantically
equivalent to parallel loops but are treated differently during storage
flattening: all access (Load/Store) to buffers from inside a kernel loop retain
multiple indices instead of using a single flattened index.
README for OpenGL
Add test application for OpenGL. Only partly working so far.
Fix typo
Verify that textures allocated by the host application are sufficiently large.
Convert between different pixel layouts in copy_to_dev and copy_to_host
if necessary.

OpenGL texture transfer only works with interleaved data.
Initialize OpenGL context directly without glut/glew
Fix typo in OpenGL debug runtime
Fix typo in comment
Remove dead lets also for very simple cases like "let var = constant".

Without removing such lets, later calls to unify_duplicate_lets() can
incorrectly reintroduce variables for constants: For example,

let var = 0
  0

will be turned into

let var = 0
  var
Update GLSL test program
Small fixes to handling of Load/Store nodes and kernel loops
Merge branch 'master' into opengl

Conflicts:
	src/CodeGen.cpp
Added experimental no_asserts and no_bounds_query target features.

This can theoretically result in leaner, meaner code, but makes no
performance difference for anything I have tested. I'm pushing it as a
branch so that others can try it if they suspect the assert overhead is
high in their case.
Don't generate assertions inside CodeGen either.
Merge remote-tracking branch 'origin/master' into opengl
Fix typo