Fix bug in bounds querying buffers used in extern stages.

Bounds querying on an input buffer wasn't respecting extern stages that
use the buffer. Each user of the buffer was just clobbering the fields
with its own requirements.

This also required:
Adding dimensionality to Parameter objects. This cleans up some other code.
Adding an intrinsic to copy a buffer_t struct
Merge branch 'master' of github.com:halide/Halide

Conflicts:
	src/Param.cpp
	src/Param.h
	src/Parameter.cpp
	src/Parameter.h
Add a test for bounds querying on buffers used in extern stages
Merge branch 'master' into glsl-select-tests
GLSL: Fix handling of select

the previous implementation erroneously assumed that the condition of a
select has the same vector width as the arguments, which is obviously
wrong for scalar conditions that don't involve the color dimension.
Add test for GLSL codegen of scalar select conditions