Add compile() and link() methods to program
Add check for packed structs in BOOST_COMPUTE_ADAPT_STRUCT()

This adds a compile-time check for non-padded structs in the
BOOST_COMPUTE_ADAPT_STRUCT() macro. Also updates the macro to
add "__attribute__((packed))" to the OpenCL struct definition.
Add hash() function
Add program::create_with_built_in_kernels() method
Fix errors when using platforms with no devices

This fixes errors caused when handling OpenCL platforms with
no devices. Now the platform::devices() method will properly
return an empty vector without throwing an exception when such
a platform is encountered.

Previously, default_device() would throw an exception when
confronted with a platform with no devices even if devices
from other platforms on the system were available.

Thanks to Godeffroy Valet for reporting this issue.
Merge pull request #164 from kylelutz/compile-link-program

Add compile() and link() methods to program
Merge pull request #168 from kylelutz/struct-is-packed

Add check for packed structs in BOOST_COMPUTE_ADAPT_STRUCT()
Merge pull request #169 from kylelutz/hash-function

Add hash() function
Merge pull request #170 from kylelutz/create-program-with-built-in-kernels

Add program::create_with_built_in_kernels() method
Merge pull request #175 from kylelutz/fix-platform-empty-devices

Fix errors when using platforms with no devices
Add get_info<Info>() specializations
Merge pull request #176 from kylelutz/get-info-specializations

Add get_info<Info>() specializations
Fix resize bug with vector::assign()

This fixes a bug in which vector::assign() would not resize
itself to accommodate the assigned values. Now the behavior
matches that of std::vector.
Add equality operators for all wrapper classes
Move device_ptr to the detail namespace

This deprecates the device_ptr class and moves it to the detail
namespace. The buffer_iterator class should be used instead of
device_ptr for referencing a memory location on the device.
Merge pull request #177 from kylelutz/fix-vector-assign

Fix resize bug with vector::assign()
Merge pull request #178 from kylelutz/equality-operators

Add equality operators for all wrapper classes
Rename create_with_builtin_kernels() method
Merge pull request #179 from kylelutz/deprecate-device-ptr

Move device_ptr to the detail namespace
Merge pull request #182 from kylelutz/rename-create-with-builtin-kernels

Rename create_with_builtin_kernels() method