ViennaCL: First draft, including all operations for sequential vectors.

Mostly derived from existing CUSP interface.
viennacl.py package for BuildSystem included, detected correctly by BuildSystem, but download option untested.
Everything compiles and the standard 'make test' passes. In-depth tests still required.
ViennaCL: Download of package now working.
ViennaCL: Removed unnecessary call to resize() at vector construction.
ViennaCL: Added MPI vectors.

Builds succeeds and distributed VecDot() passes. Full testing to come.
ViennaCL: Added sequential AIJ matrix.

Compiles, 'make test' passes. Further testing required.
Injects similar to PETSC_HAVE_CUSP into existing functions.
A general concept for dealing with accelerators is required here, but postponed after release 3.4.
aijAssemble.cpp is a stub, also row-compressed CSR is not yet supported.
ViennaCL: Renamed files to fulfill conventions (.cpp -> .cxx, all lowercase), removed restriction of C++ everywhere.
ViennaCL: Removed seqviennacl/aijassemble.cxx (would trigger error, now uses existing fallback)
ViennaCL: Added MPI-implementation for AIJ matrices.

Follows the existing interface for CUSP and CUSPARSE.
Compiles and passes standard 'make test'. No additional testing performed yet.
ViennaCL: Added package detector for OpenCL, added OpenCL-dependency for ViennaCL.

Note that ViennaCL technically does not depend on OpenCL, yet that is its primary use within PETSc for now.
OpenCL header detection on Apple (Mac OS) needs clarification, as it is located in OpenCL/ instead of CL/.
ViennaCL: Setting VIENNACL_WITH_OPENCL flag to enable OpenCL backend as default.

Could also be set depending on PETSC_HAVE_LIBOPENCL, so that ViennaCL could be used without OpenCL available.
Not considered for now, since CPU-based kernels in PETSc are available anyways.
ViennaCL: Fixed issues if size 0 is passed.
ViennaCL: Eliminated dead/unused code
ViennaCL: Now catching the correct type of exceptions (std::exception)
ViennaCL: Device type can now be specified via command line.

The default choice is usually fine. For the use of Intel's Xeon Phi, however,
one has to specify the accelerator explicitly, otherwise the CPU is used.
Command line options parsed:
 -viennacl_device_cpu           Use CPU
 -viennacl_device_gpu           Use GPU
 -viennacl_device_accelerator   Use accelerator (e.g. Xeon Phi)
Pitfall: In order to be processed correctly, a ViennaCL-vector must be created
before a ViennaCL-matrix (aijviennacl) is created.
ViennaCL: Eliminated whitespace violations, removed/fixed erroneous comments.
ViennaCL: Applied const-correctness to functions.
ViennaCL: Fixed includedir in viennacl.py package handler
ViennaCL: Updated to new AMS viewer model
ViennaCL: Updated code for new interface to PetscObjectComposeFunction() and XXXRegister()
ViennaCL: fix LOCDIR