Merge pull request #105 from steven-johnson/master

Add some comments to the generated-C++ output
Added an app that uses the C backend to make sure it doesn't break.

It only covers a very simple use of the C backend, but it can be
expanded as we find bugs.
More portable cpuid code.
Clarification in INSTALL
Manually include sse2 for the blur reference code.
Slight cleanup of simd_op_check
Made the code still compile if asserts are off.

Turning off asserts requires messing with Util.h, but I thought it should at
least be possible, e.g. to test the performance implications of the asserts.
Changed some testing outputs from stderr to stdout
Changed Expr::Compare to workaround gcc-4.4 bug
Added optional static bounds for Params.

They're exprs, so you can declare things like one param being less
than another param. If you want to introspect them as constants,
use as_const_int or as_const_float from IROperator.h. For constants that
aren't int32 or float32 you'll need to dig through a cast as well, e.g.:

Expr e = param.get_max_value();
const Internal::Cast *c = e.as<Internal::Cast>()
if (c) return as_const_int(c->value);
else return NULL;
Added comments to buffer_t
Workaround for a bug in llvm 3.3
Better handling of inf and nan in C backend
isnan and isinf fixes for msvc
Move a lot of posix_math.cpp into posix_math.ll

This lets us annotate the calls as side-effect-free.
Improved pnacl build instructions

Pnacl llvm doesn't seem to build using ./configure && make anymore.
Changes to satisfy -pedantic
Bug in generating var names for an implicit base case reduction definition

Repeated var names were getting created, and that error wasn't being
caught as early as it should have been. We now check for name reuse
when defining a Func.

- Andrew
Add header required for memcpy.
posix_clock.cpp should use sys/time.h (or time.h on Windows) rather than trying to define timeval itself; the existing definition was wrong for OSX (Issue #107)