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.