Fix build issues with GCC < 4.5

 + Space/or/Newline needed for loops with empty bodies
 + __host__ and __device__ redefined due to push/pop macros not existing on GCC < 4.5.
 + Missing #include for iterator_categories.

@kperelygin points out that this doesn't work because the name `device_system_tag` isn't a `struct`, it's a `typedef`.

I took another look at `detail/device_system_tag.h` -- it's not heavyweight, so it should be fine to `#include`.