add function getForwardedValue, refactor foreach

- add opposite function of forward
- use new getForwardedValue in ForEach
cleanup functor which has used RefWrapper

 delete all explicit RefWrapper in functor signatures
change usage ref,byRef to forward
change year, add pragma once
change comments

- thanks to @f-schmitt-zih
Merge pull request #427 from psychocoderHPC/topic-refactorForEach

 refactor forEach
refactor static assert

use  BOOST_MPL_ASSERT_MSG assert to evaluate conditions
move VillaBune current check to the solver
extens static assert with typeinformation
add explicit namespace for trait call
remove BOOST_ASSERT with PMACC_CASSERT_MSG
add prefix `pmacc_` to makro param names