First version of CMake build with CUDA working.

Basically injects cuda_add_library instead of add_library where needed. Handling of nvcc/host flags still requires improvements.
CMake-CUDA: Host compiler flags, arch, and CUDA_TOOLKIT_ROOT_DIR are now passed correctly.

Since FindCUDA.cmake is driven by CUDA_TOOLKIT_ROOT_DIR, passing include-, bin-, or lib-directories
won't help. Nevertheless, this should cover most use cases. Otherwise, there is still the fallback to legacy mode.
CUSP: Avoids exposing private functionality through petsccusp.h
CMake-CUDA: Circumvent problems of passing -arch=sm_XY to CMake

The problem is that the CMake parser has problems with additional '=' signs, such as in CUDA_NVCC_FLAGS:STRING="-g -arch=sm_13"
Could not find a consistent way of passing these flags, hence using an initial cache file for this.
Also increased timeout in order to avoid premature termination of sane CMake runs.
CMake-CUDA: Fixed use of PETSC_ARCH as environment variable.
CMake-CUDA: Updated timeout for CMake boot to 300 seconds
CMake-CUDA: Fixed problem with using double quotes in --compiler-options.
CUDA-CMake: Removed quotes for NVCC flags. Added contents of initial_cmake_file.cmake to configure.log
cmakegen.py: de-duplicate sources lists for cuda_add_library
Merge branch 'karlrupp/cmake-cuda-builds'
Merge branch 'cj/fix-petsccusp'
adding a function to figure out sparsity pattern
Fortran: callbacks cannot use auto-generated interfaces
Merge branch 'master' of bitbucket.org:petsc/petsc
Merge branch 'julee/ts-advection-diffusion-reaction'

* julee/ts-advection-diffusion-reaction:
  adding a function to figure out sparsity pattern
Doc: Small fix to bibliography