Checkpoint caching code.
Checkpoint compute_cached implementation.
Add test for compute_cached.
Merge branch 'master' into compute_cached

Conflicts:
	Makefile
	src/Func.cpp
Initial compute_cached support.
Merge branch 'master' into compute_cached

Conflicts:
	Makefile
	src/IR.cpp
	src/IR.h
	src/Lower.cpp
Forgot to add the cache prototype/placeholder.
Checkpoint compute_cached code.
Merge branch 'master' into compute_cached

Conflicts:
	src/CodeGen.cpp
Correctness fixes for compute_cached.

Stores to cache key now take into account that the index to Load/Store
is scaled by the sizeof the type.

The cache_tag support now properly records the expression.
Fix issue with alignment in cache key.

Make cache incorporate buffer bounds in hit test.
Merge branch 'master' into compute_cached

Conflicts:
	src/IR.h
Merge branch 'master' into compute_cached

Conflicts:
	Makefile
	src/Lower.cpp
	src/Schedule.h
Missed in merge.
Couple more merge issues.
Merge branch 'master' into compute_cached

Conflicts:
	Makefile
	src/Schedule.cpp
	src/Target.cpp
Merge fixes.
Checkpoint compute_cached support. Changes include:

Adding cache eviction. Including a way to set the amount of memory to use.

Supporting caching of Funcs that return Tuples.

Tracking both the computed and allocated bounds. (Naming around this
int he code may be wrong.)

Added calls to allow non-root caching. (Needs tests and naming may change.)

Feel free to review, though at least the following need to be fixed before merging:

- Still not threadsafe.

- Need to add prototypes to HalideRuntime.h.
Merge branch 'master' into compute_cached

Changing naming from "cached" to "memoize".

Conflicts:
	Makefile
	src/Target.cpp
Fix naming around computed vs realized.

Add locking using ScopedSpinLock.

Add parallel test case.

Make bounds inference understand (the likely misnamed) memoize_expr.

Change to using address_of rather than a ".host" Variable name for
getting the cache key memory address.