[Whitespace] Clean up whitespace in backend/CMakeLists.txt
[ISTLMatrixBackend] Move support infrastructure into istl namespace and hide it from Doxygen

This is a first step towards cleaning up the mess in the backend headers. For some reason,
moving the tag-based helper functions into the new namespace also exposed a number of ordering
problems that the compiler accepted before, so I had to shuffle the order of the functions within
the file a little.
[ISTLMatrixBackend] Add a little documentation to the ISTLMatrixBackend struct
[ISTLVectorBackend] Move support infrastructure into istl namespace and hide it from Doxygen

This is a first step towards cleaning up the mess in the backend headers. Like in the matrix
header, this exposed a number of code ordering problems, so some functions have moved up / down
within the file.

The patch also removes all the bits and pieces of the monstrous TMP that deduces the vector block
structure from the Doxygen docu and adds a little bit of documentation for the raw() helpers.
[testpoisson] Add some code to exercise the copy constructor and assignment operator of the matrix wrapper
[ISTLMatrixBackend] Store ISTL object in shared pointer to allow reattaching to different matrices

As outlined in a recent discussion on the mailing list, being able to have a single wrapper
object operate on multiple ISTL matrices is something we want, just like it is already possible
for the vector backend.

So this patch changes the ISTLMatrixContainer to store the ISTL matrix in a shared_ptr and adds
attach() and detach() methods equivalent to the ones in the ISTLBlockVectorContainer.

Beware: The recently added default constructor does NOT allocate an underlying matrix object,
you will have to attach one before using the wrapper!
[ISTL] Improve storage interface of vector and matrix wrappers

This patch adds two new observers:

- attached() can be used to quickly check whether the wrapper is currently
  attached to an ISTL object.

- storage() returns the shared_ptr contained in the wrapper. This replaces the existing
  method containerStorage() on the ISTLBlockVectorContainer. That method wasn't used
  anywhere, and storage() is shorter and just as clear.
[ISTLVectorBackend] Fix typo
 [testpoisson] Add some code to exercise the copy constructor and assignment operator of the vector wrapper
[ISTL] Add new tags and associated tagged constructors to allow creation of unattached vector / matrix wrappers

This patch adds a new header file with tag structs that can be used to control whether the wrappers
will create a new ISTL object during creation.

As it is now possible to have wrappers that do not contain a valid ISTL object, the assignment operators
need to be a bit more careful and distinguish between having an attached object (call the assignment
operator for the ISTL object) and not being attached (allocate a new ISTL container and invoke the copy
constructor).
Merge branch 'feature/improve-istl-backend-storage-interface'

Adds some improvements to the way the ISTL backends interact with the underlying
ISTL vectors / matrices. In particular, it is now possible to reattach the matrix
wrapper to different ISTL matrices and to construct empty wrappers without an
automatically created ISTL object.

* feature/improve-istl-backend-storage-interface:
  [ISTL] Add new tags and associated tagged constructors to allow creation of unattached vector / matrix wrappers
  [testpoisson] Add some code to exercise the copy constructor and assignment operator of the vector wrapper
  [ISTL] Improve storage interface of vector and matrix wrappers
  [ISTLMatrixBackend] Store ISTL object in shared pointer to allow reattaching to different matrices
  [testpoisson] Add some code to exercise the copy constructor and assignment operator of the matrix wrapper
  [ISTLVectorBackend] Move support infrastructure into istl namespace and hide it from Doxygen
  [ISTLMatrixBackend] Add a little documentation to the ISTLMatrixBackend struct
  [ISTLMatrixBackend] Move support infrastructure into istl namespace and hide it from Doxygen

Conflicts:
	dune/pdelab/backend/CMakeLists.txt