Remove the CPU hardware context from the general list of test hardware contexts
Having CPU code path in the general hardware context list leads to having
many if (CPU) clauses. This complicates things in places, where there are
several CPU runners. Since in most cases (i.e. everywhere apart from Ewald
tests) the runners know the hardware they should use, the selection of CPU
or GPU is now done when the runners are created. TestHardwareContext is
to become TestDeviceContext and will only hold GPU devices.