Fixes of highly templated code so that the cuda 5.5 front end can parse it.

The new Cuda 5.5 front end has a bug where it can't handle an intiailizer
list where inside a member is set by calling a dependent templated function
on a parameter that is passed in. We fix this by calling a free standing
function that calls the dependent templated function.
Merge branch 'cuda5_5_and_clang'