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.
MPIAJI-preallocation: Fixed problems with MAT_NEW_NONZERO_ALLOCATION_ERR for GPUs.

Note that the default allocation for off-processor values is the same as for on-processor values.
We agreed on this in favor of a simpler implementation. Users are advised to set a proper allocation pattern anyway.
Merge branch 'karlrupp/fix-mpiaij-prealloc' into next
added -pc_use_amat option to PCSetFromOptions()
Merge branch 'barry/fix-pc-use-amat' into next
SNES ex75: Start of an example with exact solution for 2D variable-viscosity Stokes
removed excessive use of CHKMEMQ;
Merge branch 'barry/fix-excessive-chkmemq' into next
MPIUNI: Now it returns error codes correctly
- Also ignore -hosts option
SNES ex75: Added Maple verification test, and added preliminary FEM test