adjust laser calculation: enable elliptic shape
adjust param files for elliptic wavepacket laser
refactor currentSolver

- change template parameter of solver
- add Solver.def and Solver.hpp to include all Solvers
- add CurrentVillaBune.def and Esirkepov.def to splitt implementation and forward declaration
change currentConfig.unitless

- use new Solver.def and Solver.hpp includes
- update template arguments for solver
Close #381 Meta Information in Phase Space

Uses m_species * c to scale output for now.
(Previously it scaled by the electron mass.)

New Attributes:
  - exclusive offset of the global moving window
    if the spatial dimension is == y
  - [p_min;p_max] + unit
  - dr, dV + unit (spatial dimension)
  - dt + unit (time step)
Remove Left Over Debug Message
simBox -> DomainInformation, namings spatial size/offset

- correct globalPS Size and movingWindow global Size
- add savety assert
Fix Reduce Group Creation

we have to create a reduce object for each plane we want to reduce
afterwards
Inverse r-p, Dump Log
Generic Handling Of Guard Cropping
Replace Pair with AxisDescription

- a struct is way more self descriptive here
Clean up: Dead Code and Shorten domInfo Usage
Merge pull request #407 from ax3l/topic-FeaturesPhaseSpace

Close #381 Meta Information in Phase Space
Disable mpi_leave_pinned for non-GPU-aware MPIs

See bug
  http://www.open-mpi.org/community/lists/users/2012/11/20659.php

First seen in PIConGPU
  https://github.com/ComputationalRadiationPhysics/picongpu/pull/407#issuecomment-43790418

Problem description:
  cudaMalloc/cudaFree are not correctly intercepted for non-GPU aware
  MPI implementations.
  The default value of mpi_leave_pinned -1 lets the underlying network stack
  decide if it prefers to enable this option.
  Since cudaMalloc'ed memory is pinned, MPI does not realize the memory
  has changed in the follow case:
    - cudaMalloc some host buffer
    - (work with it)
    - cudaFree the buffer (MPI does not realize that)
    - cudaMalloc a new buffer and repeat
  For MPI the memory behind the second malloc does still *look* as if it
  would be unchanged. This causes undefinded behaviour (e.g. the OpenIB
  stack could try to reuse the last cached value of the pointer).

Even if we triggered this problem with our local IB network stack, the
bug is not *limited* to Infiniband. It is a generic flag and can in
principle happen for any network stack that tries to pin allocations.
For that reason, the flag was not added to our file openib.conf

Incomplete list of GPU aware MPI implementations
  https://devblogs.nvidia.com/parallelforall/introduction-cuda-aware-mpi/

  - MVAPICH2 1.8/1.9b
  - OpenMPI 1.7 (beta)
  - CRAY MPI (MPT 5.6.2)
  - IBM Platform MPI (8.3)
Taurus: Disable Pinned for now
Merge pull request #438 from ax3l/fix-leavePinnedMPI

Disable mpi_leave_pinned for non-GPU-aware MPIs
Merge pull request #436 from psychocoderHPC/topic-refactorCurrentSolver

refactor current solver
Merge pull request #434 from PrometheusPi/laserWavepacketEllipse

Laser wavepacket ellipse
refactor static assert

use  BOOST_MPL_ASSERT_MSG assert to evaluate conditions
move VillaBune current check to the solver