Removed dependency on STL iterator_traits

I simply implemented the standard for iterator_traits but in the thrust namespace.

I also updated the specializations for thrust::pointer iterators to use our new type