Adds support for selecting devices with environment variables

boost::compute::system::default_device() supports the following
environment variables:

BOOST_COMPUTE_DEFAULT_DEVICE   for device name
BOOST_COMPUTE_DEFAULT_PLATFORM for OpenCL platform name
BOOST_COMPUTE_DEFAULT_VENDOR   for device vendor name

If one or more of these variables is set, then device that satisfies
all conditions gets selected. If such a device is unavailable, then
the first available GPU is selected. If there are no GPUs in the
system, then the first available CPU is selected. Otherwise,
default_device() returns null device.

The hello_world example is modified to use default_device() instead
of default_gpu_device().
Add get() methods to wrapper classes

This adds a get() method to each wrapper class which returns
a reference to the underlying OpenCL object.
Return event from command_queue::enqueue_nd_range_kernel()

This changes the enqueue_nd_range_kernel() method to return an
event object. This allows clients to monitor the progress of a
kernel executing on a device.
Return event from command_queue::enqueue_task()

This changes the command_queue::enqueue_task() method to return
an event object.
Add memory_object::reference_count() method

This adds a reference_count() method to the memory_object
class which returns its current reference count.
Add test for command_queue::enqueue_write_buffer_rect()

This adds a test for the enqueue_write_buffer_rect() method
in the command_queue class. This method copies a rectangular
region of memory from the host to a device buffer.