Kokkos: Added Lambda version of parallel_for with ParallelWorkRequest

The same now applies to starting parallel_for with a ParallelWorkRequest
as with a simple integer. I.e. parallel_for(someWorkRequest, [=] {} );
now works on host.
Kokkos: Added team_size and team_rank functions to the vector interface
Kokkos: Fixed an issue with Timer when compiling with KOKKOS_USE_LIBRT
Kokkos: fixed a number of issues after refactoring the shape/offset_map relations

There were some issues left over, which are only exposed when using certain types
of subviews in particular with respect to strided views. We need to add Unit Tests
for those cases.
Kokkos: removed explicit KOKKOS_ATOMIC_USE_OMP31 from unit test

this define can only be set if OpenMP 3.1 is available. Hence the build
errors with some compilers (i.e. GCC <4.7). This only recently became
a problem when atomics with OpenMP were finally switched to use capture
an OpenMP 3.1 feature. Before they were handled with critical sections.
Using the capture mode was always the intend, hence the name of the define.

Note that if available GCC intrinsics for atomics are always preferred.
Kokkos: Query Cuda device architecture actually used by executing Cuda kernel and returning the value of __CUDA_ARCH__.  This may be less than the device's actual compute capability depending upon how the Cuda code is compiled.  Print a warning that performance may be reduced.
Minor change to avoid unnecessary memory allocation when num_lid_entries==0.

Build/Test Cases Summary
Enabled Packages: Zoltan
Enabled all Forward Packages
0) MPI_DEBUG => FAILED: passed=431,notpassed=1 => Not ready to push! (5.06 min)
1) SERIAL_RELEASE => passed: passed=399,notpassed=0 (26.15 min)
WARNING: Forced the push!
Stokhos:  Added shell Teuchos::LAPACK specialization for UQ scalar types

These specializations just throw errors if any of the methods are
called.  At least allows code that uses them to compile with Stokhos UQ
scalar types.
Stokhos:  Update MueLu instantiations for Stokhos UQ scalar types.

With the new Teuchos::LAPACK specializations for UQ scalar types, I can
instantiate MueLu::Constraint.  Also added new instantiations after
running the ETI scripts.
Stokhos:  Remove unneeded partial specializations.
Stokhos:  Check for non-contiguous allocations in PCE view spec.

When Kokkos manages the PCE allocation, it is always contiguous.  But
the view can also take a third-party pointer, which may not have the
right allocation.  This happens, e.g., when MueLu creates its tentative
prolongator.  We know check for this, and throw errors when an operation
is done that doesn't work without contiguous allocations, and implements
a deep_copy() that does.  Added a unit test for this scenario.
TrilinosCouplings:  Fix a few small scalar type issues in FENL.
TrilinosCouplings:  FENL cleanup after merging Jonathan's changes.

I undid the changes to BelosSolver and CGSolver.  I think it is just
simpler this way.
Stokhos: Added PCE division
MueLu: arcadia: updating the README
Kokkos: Fix testing of Cuda device minor version number for hardware / build mismatch.
MueLu: improve EasyParameterListInterpreter msg

Improving exception handling and message.

Previously, if a parameter had the wrong type, an exception with a ambiguous message would be thrown:

  terminate called after throwing an instance of 'Teuchos::Exceptions::InvalidParameterType'
    what():  Error!  An attempt was made to access parameter "sa: damping factor" of type "int"
    in the parameter (sub)list "ANONYMOUS" using the incorrect type "double"!

Now the exception is caught, and a more helpful message is printed:

terminate called after throwing an instance of
'Teuchos::Exceptions::InvalidParameterType'
  what(): muelu/src/Interface/MueLu_EasyParameterListInterpreter_def.hpp:423:
  Throw number = 2
  Throw test that evaluated to true: true
  Error: parameter "sa: damping factor" must be of type double

Build/Test Cases Summary
Enabled Packages: MueLu
Enabled all Forward Packages
0) MPI_DEBUG => Skipped configure, build, test due to no enabled packages! => Does not affect push readiness! (-1.00 min)
1) SERIAL_RELEASE => Skipped configure, build, test due to no enabled packages! => Does not affect push readiness! (-1.00 min)
2) MPI_SS_DEBUG => passed: passed=143,notpassed=0 (12.59 min)
3) SERIAL_SS_DEBUG => passed: passed=106,notpassed=0 (15.12 min)
Kokkos: Adding missing include

some compilers need cstring to be included for memcpy, while others
include it indirectly with all kinds of other headers. Made it explicit.
Kokkos: Added Lambda variant of parallel_reduce(Iter, Functor, ReturnValue);

Added both the flat parallelism as well as the ParallelWorkRequest version
of parallel_reduce which supports Lambdas. This right now works only for
the variant where the ReturnValue is provided by reference.
As device_type Kokkos::DefaultDeviceType is used.
For init the reduction value is initialized as:

value = ValueType();

The join is performed as:

update += input;

The same code is used if a functor is provided without a device_type defined.

An example:
    double result = 0.0;
    Kokkos::parallel_reduce(Kokkos::ParallelWorkRequest(25,4),[=](const DeviceType& dev, double& sum)  {
      int i = dev.league_rank()*dev.team_size() + dev.team_rank();
      sum += a(i,1) + a(i,2);
      sum += a(i,0) - a(i,3);
      sum += a(i,4) + a(i,0);
      sum += a(i,2) - a(i,1);
      sum += a(i,3) + a(i,4);
    },result);

    double result = 0.0;
    Kokkos::parallel_reduce(100,[=](const int &i, double& sum)  {
      sum += a(i,1) + a(i,2);
      sum += a(i,0) - a(i,3);
      sum += a(i,4) + a(i,0);
      sum += a(i,2) - a(i,1);
      sum += a(i,3) + a(i,4);
    },result);

This code does not work with the result being a pointer.
Kokkos: Added tests for Lambdas

Added reduction unit tests with lambdas.