Ongoing support for int64 for KNC:
Fixes to __load and __store.
Added __add, __mul, __equal, __not_equal, __extract_elements, __smear_i64, __cast_sext, __cast_zext,
and __scatter_base_offsets32_float.

__rcp_varying_float now has a fast-math and full-precision implementation.
Merge pull request #328 from jduprat/explicit_isa_in_tests

Explicit isa in tests
Rename gather/scatter_base_offsets functions to *factored_based_offsets*.

No functional change; just preparation for having a path that doesn't
factor the offsets into constant and varying parts, which will be better
for AVX2 and KNC.
Add support for non-factored variants of gather/scatter functions.

We now have two ways of approaching gather/scatters with a common base
pointer and with offset vectors.  For targets with native gather/scatter,
we just turn those into base + {1/2/4/8}*offsets.  For targets without,
we turn those into base + {1/2/4/8}*varying_offsets + const_offsets,
where const_offsets is a compile-time constant.

Infrastructure for issue #325.
Whitespace / indentation fixes.
Merge branch 'master' of https://github.com/ispc/ispc

Conflicts:
	examples/intrinsics/knc.h
Stop factoring out constant offsets for gather/scatter if instr is available.

For KNC (gather/scatter), it's not helpful to factor base+offsets gathers
and scatters into base_ptr + {1/2/4/8} * varying_offsets + const_offsets.
Now, if a HW instruction is available for gather/scatter, we just factor
into base + {1/2/4/8} * offsets (if possible).  Not only is this simpler,
but it's also what we need to pass a value along to the scale by
2/4/8 available directly in those instructions.

Finishes issue #325.
Fixed missing tmp var needed for use with gather intrinsic
Doc fixes (Crystal Lemire).
Add support for RDRAND in IvyBridge.

The standard library now provides a variety of rdrand() functions
that call out to RDRAND, when available.

Issue #263.
Added a few functions: __setzero_i64() __cast_sext(__vec16_i64, __vec16_i32), __cast_zext(__vec16_i32)
      __min_varying_in32(), __min_varying_uint32(), __max_varying_int32(), __max_varying_uint32()
Fixed the signature of __smear_i64() to match current codegen
Add more tests of basic gather functionality.
Fix bugs in detection of Ivy Bridge systems.

We were incorrectly characterizing them as basic AVX1 without further
extensions, due to a bug in the logic to check CPU features.
Only set gcc's "-msse4.2", etc, option when compiling for generic targets.

We don't need it when ispc is just generating an object file directly, and gcc
on OS X doesn't recognize -mavx.
Fixes for intrinsics unsupported in earlier LLVM versions.

Specifically, don't use the half/float conversion routines with
LLVM 3.0, and don't try to use RDRAND with anything before LLVM 3.2.
Run inst combine before memory optimizations.

We were previously emitting 64-bit indexing for some gathers where
32-bit was actually fine, due to some adds of constant vectors
that hadn't been simplified to the result.
Rename gen_gather() macro to gen_gather_factored()
Emit gather instructions for the AVX2 targets.

Issue #308.
Merge branch 'master' of https://github.com/ispc/ispc
All the smear(), setzero() and undef() APIs are now templated on the return type.
Modified ISPC's internal mangling to pass these through unchanged.
Tried hard to make sure this is not going to introduce an ABI change.