Overhauled the vector system for OpenCL types

 * All OpenCL vector types are now records instead of arrays
  (this is needed to pass single vectors to OpenCL kernels;
   there is no C_Pass_By_Copy convention for arrays in Ada)
 * Added equality functions for floating point types / vectors
   with an epsilon value as generic argument
 * Updated tests; added new test for passing a vector to a kernel
 * added constructor functions for vectors and vector arrays
   because records might become unchecked unions in the future
   and then initialization with an aggregate would be a very
   bad thing
 * Added code for vectors being unchecked unions, but commented it
   out. This is currently not possible because GNAT has apparently
   a bug that prevents the Unchecked_Union pragma to be inherited
   when deriving from such a type. See
   http://stackoverflow.com/questions/14663316/derive-from-unchecked-union
 * When unchecked union code get activated, it will be possible to
   access vector types with .X, .Y, .Z and so on.