Device-Specific: Now throwing an exception during generation if the supplied parameters are invalid
Device-Specific/Templates: Added the possibility to choose the vector-width of the kernel arguments
Device-Specific/ GEMM: Now using floatn* instead of float* + vload.

The fallback kernel has to be used whenever simd_width>1 && (ldstartA % simd_width > 0 || ldstartB % simd_width > 0).
This is quite a mess, but thanks to this commit it'll be easier to see if vstore(), vload() causes any performance regression, and use floatn* everywhere if this is the case