Generalization of online kernel cache.

This is an extension of idea proposed by @bmerry in #117.
Basically, kernel_cache now is an instantiation of object_cache class
template. The object_cache may hold objects of any kind, indexed by
either context or command_queue. From the user standpoint though
the indexing is always happening by `const backend::command_queue&`.

All caches may be transparently purged by purge_caches() family
of functions (The name has changed from purge_kernel_caches()).
Merge pull request #118 from ddemidov/generic-online-cache

Generalization of online kernel cache.
Cache clogs objects using the new generalized cache

Clogs objects are indexed by queue rather than context, because they
store temporary data that is used during the execution of the
operations.
Fix VEX_STRINGIZE_SOURCE

In some cases BOOST_PP_STRINGIZE (used in the background of
VEX_STRINGIZE_SOURCE) did not work.
Merge pull request #120 from bmerry/clogs-cache2

Cache clogs objects using the new generalized cache
Increase number of random sizes in FFT test

Trying to bring some determinism into coverage statistics
Use VEX_STRINGIZE_SOURCE for internal source stringizing

BOOST_PP_STRINGIZE may not work if BOOST_PP_VARIADICS is off for the
current compiler.
Reimplement reduction functors (SUM, MIN, MAX)

The new implementation uses same dual functors as in sort/scan
algorithms.
Use object_cache to cache Reductor work buffers

This should save device memory when many instances of vex::Reductor
are created at different points in program. It will also fix #119
Fixed fft test for CUDA backend

There is no need to check for POCL under CUDA backend
Fixed a couple of CUDA incompatibilities in FFT
Reduce maximum size for FFT test
Resolved errors and warnings given by VS2010 for the CUDA backend
Resolved unused parameter warning
Documentation fix
Revert changes to reduce_by_key test

It won't compile in Debug mode on VS2010, but it works fine in Release
mode.
Rewrite reduce_by_key test

So that VS2010 is able to compile it in Debug mode
Raw vector pointers are sizeless

Otherwise this would not work: https://gist.github.com/ddemidov/10957406
Restrict number of custom function arguments
Move reduce_by_key kernels into detail::rbk namespace