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
Add disambiguation constructor for Param("foo").

"foo" can be cast to bool or string
merge from Master