Buffer creation from OpenCL context now a const member

There is no reason for not making it const...
Extended SPAI to run in separate contexts. Fixed a bad bug and unified style a bit.

In particular, the implementation should now be able to support multithreaded execution (multiple threads operating indepedently in different contexts)
Merge branch 'master' of github.com:viennacl/viennacl-dev