build with nvidia libopencl, since ubuntu's ocl-icd-libopencl1 conflicts with it; also, add a wrapper class for the vector-map 'sparse matrix', as a prerequisite for implementing the viennacl sparse matrix types (we need something pythonic to push data to and from)
neaten up the code