More functionality

This pull request includes the previous pull request (the one that fixed the vector addition test).

It also adds support for Flush and Finish (very useful for debugging OpenCL code) plus some more device properties and kernel and kernel work group properties too.