implement perfect forwarding within lambda functors

- every non-const reference argument of a lambda functor is converted to a refWrapper.
  Therefore the arguemnt tuple can be forwarded inside the lambda functor as a const reference.
  All RefWrapper values are converted back to non-const references before they are used.
implement perfect forwarding within lambda functors. Add forward.hpp

Whenever a templated functor is called the arguments are supposed to be
forwarded:

functor(arg0, arg1, ...); -> functor(PMacc::forward(arg0), PMacc::forward(arg1), ...);

"forward" converts every object form which a non-const reference can be build to a RefWrapper object.

- every non-const reference argument of a lambda functor is converted to a refWrapper.
  Therefore the arguemnt tuple can be forwarded inside the lambda functor as a const reference.
  All RefWrapper values are converted back to non-const references before they are used.
removed unneccesary PMacc::
Merge pull request #46 from Heikman/fix/BrokenReference

Fix/broken reference