refactored the way properties are handled

There is a framework now to handle the get info for the different
OpenCL objects. They are exported as (read-only) properties and they
don't cache results (caching support could be added if needed, on a
per-property basis).