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