Apps Makefile support for OpenCL + A bunch of small fixes

Here's a description of the changes in this pull request:

- Added OpenCL linker flags to (some of the) apps: ~~the ones with support added are working and generating good performance numbers (roughly matches Halide native target on the CPU)~~ Never mind that, I was accidentally still invoking the native target. This pull request still represents useful progress, but I still have some work to do here.
- Fixed OpenCL targets for non-JIT use cases.
- Added dummy kernels to OpenCL C and SPIR programs to avoid errors caused by empty programs on some implementations of OpenCL.
- Changed the C codegen to generate float literals in hex instead of decimal to avoid loss of bits. This required a somewhat ugly dependency on LLVM due to the lack of a portable non-C++11 way to do this. 
- Implemented most of the math library in SPIR.
- Tweaked the gpu_multi_kernel test to avoid floating point issues. 
- There actually is an (f)abs in OpenCL C :)