A workaround for a bug in AMD OpenCL
Revert "A workaround for a bug in AMD OpenCL"

This reverts commit 06660f0130fade48e360f2940bed38fae8646dd2.
Merge remote-tracking branch 'neapel/master'
Use boost.chrono in profiler
Simplify opencl profiling

Replace inefficient event processing with queue finish/cpu tic combination
Changed device weight function signature

No need to create queue with enabled profiling
Changes in profiling
Removed unused field from cl_profile_unit
Buffer mapping

It is now possible to map opencl buffer to host-side array.
Enables zero-copy technique on CPU devices and has some use-cases on GPUs.
doc update
Wrapper for boost::compute::inclusive_scan
Wrapper for boost::compute::exclusive_scan

@byzhang: neither version of the algorithm works though: the destination vector
remains unchanged after call to scan().

test_scan from the Boost.Compute test suite also fails, so this is probably a
bug in Boost.Compute (or a work in progress).
Use float type and multipole devices in boost.compute example

The example still does not work
Adding boost::compute::accumulate test

@byzhang, @kylelutz: the accumulate algorithm works, and scan does not.
compute::begin, compute::end should get vectors by reference
Adding vector sum example for boost.compute

This gives me same error as in scan example in debug mode: Invalid Memory
Object. The exception is thrown inside compute::kernel::set_arg().

The release mode does not work as well and results in segmentation fault.
Adding tests for pure vexcl/compute vector addition

@kylelutz: Boost.Compute compiles its kernels every time an algorithm is
called. This leads to a considerable overhead, which could in principle be
avoided by caching the compiled kernels in static objects.

Here are timings of the benchmarks:
```
$ time ./vecsum_vexcl
1. Tesla K20c

real    0m0.555s
user    0m0.051s
sys 0m0.432s

$ time ./vecsum_compute
Tesla K20c

real    0m1.395s
user    0m0.659s
sys 0m0.632s
```
Call boost.compute algorithms with buffers obtained by raw api calls.

@kylelutz: this does work, so probably there is some problem inside vexcl.
The vexcl/boost.compute interaction works now

@kylelutz, @byzhang:
The problem apparently was in premature destruction of
some temporary objects passed by reference.
Separate functions for inclusive and exclusive scans