Support returning std::vector<T> from get_info<T>()

This adds support for returning a std::vector<T> from the
various get_info<T>() methods. This provides a simpler
interface to get the values in an array returned from one
of the clGet*Info() functions.

This also adds a test using the new API to get the maximum
work item sizes in each dimension for a device.
Add device::partition() method

This adds a new set of methods to the device class allowing
device objects to be partitioned into multiple sub-devices
using the clCreateSubDevices() function.

For now, device partitioning is only supported on systems
with OpenCL version 1.2 (or later).
Fix bug in command_queue test on AMD platforms

This fixes a bug in the event_profiling test case in the
command_queue test. On AMD platforms, the event object
returned from clEnqueueMarker() has no profiling information
associated with it and returns an error code when accessed.

Now, profiling information for a simple write to a device
buffer is checked instead.
Remove support for cl_half

This removes support for cl_half (typedef'd to half_).

The issue is that the cl_half type is indistinguishable
from the cl_ushort type (both are typedefs for uint16_t)
which caused the cl_khr_fp16 pragma to be injected into
kernels using cl_ushort which causes errors on platforms
that do not support the cl_khr_fp16 extension.
BOOST_COMPUTE_DEFAULT_DEVICE accepts substrings of device name

BOOST_COMPUTE_DEFAULT_DEVICE="Intel"
is much more convenient than
BOOST_COMPUTE_DEFAULT_DEVICE="Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz"