Load magnetic field grid and implement RK and parabolic extrapolators
This MR is a proof of concept for loading the magnetic field grid into texture memory. Texture memory allows to use special hardware to do 3D linear interpolation of field vector. If texture memory is not available (eg non-cuda targets) it fallback to regular memory, and software interpolation.
The compressed magnetic field in binary format is about 15MB, it is too big to be included in allen as we do other geometry, but it will be soon deployed to cvmfs (see Detector!708 (merged) and lhcb-datapkg/FieldMap!5 (merged)) so Allen could load it directly (a symlink could be added to the geometry folders).
This MR also adds an example algorithm that use the magnetic field to extrapolate states, but it is not added to any sequence by default. CPUBackend is refactored to provide structs and constructors for all cuda vector types. A new UNROLL macro is introduced to enable compatibility between GCC, Clang and NVCC.
Need Detector!807 (merged) for the dumper.