Fixed bug appearing in kernels after a GEMV based one
* Generator : Fixed #include issue
* Generator : Added math function sign()
* Generator : Fixed missing #ifdef on random_vector and random_matrix
* Generator : Added test for kernel segmentation
* Generator : separated SAXPY for vectors and matrices
Merge branch 'master' of https://github.com/viennacl/viennacl-dev
Generator : Rewrote packing policies
Reverted custom-kernels.cpp back to old version (accidentally overwritten by Phil when merging generator)
Added context information to viennacl::ocl::handle
Minor line feed unifications.
Added .gitattributes to deal with line endings
Fixed bug in index_norm_inf for small vectors (uninitialized local/shared memory)

Affected CUDA and OpenCL backends.
Improved vector-test, which had a numerical instability in the element_div() section.

Round-off errors due to poorly chosen test data caused the test to fail occasionally.
[API Change] Refactored OpenCL backend: Kernels are now generated automatically from compiled program.

A user thus no longer needs to call prog.add_kernel("...");, as this was somewhat redundant anyway.
As a nice side effect, there should be less overhead involved, as the OpenCL backend is now called only once rather than multiple times.
Replaced OpenCL-specific ocl::finish() by more generic backend::finish()
Replaced use of ocl::finish() by backend::finish() to be more general.
Replaced use of ocl::finish() by backend::finish()
Replaced ocl::finish() by backend::finish()
Substantial refactoring of OpenCL backend to allow for multithreading.

Instead of using the global routines viennacl::ocl::current_XYZ(),
now the context is obtained from the kernel or the memory buffer.
ocl::handle<> thus holds a reference to its ocl::context,
a ocl::kernel holds a reference to the ocl::program and ocl::context,
and a program holds a reference to context.
init() routines for the kernel sources now take the context as parameter.
[API Change] Refactored viennacl::ocl::device, added caching. Now provides all properties defined in OpenCL standard.

Minor API change: local_memory() -> local_mem_size()
The caching was added in order to circumvent eventual performance issues if an OpenCL SDK is unable to provide device properties quickly.
inner_prod() and norm_X() functions now use context-aware temporaries.
Reduced overhead in the kernel generation arguments binding
Added proper size checking in the vector and matrix SAXPY