Rearrange types tests
Add experimental directory

This adds an experimental directory which contains various
experimental algorithms and functions. The files and APIs
under this directory are experimental and unstable.
Simplify accumulate() with reduce()
Add mapped_view container
Add wait_list class

This adds a wait_list class which contains a vector of OpenCL
events that can be waited on before executing further commands.
Add enqueue_native_kernel() method to command_queue