[API Change] Refactored viennacl::ocl::device, added caching. Now provides all properties defined in OpenCL standard.

Minor API change: local_memory() -> local_mem_size()
The caching was added in order to circumvent eventual performance issues if an OpenCL SDK is unable to provide device properties quickly.