various fixes of strided_iterator

1. explicitly defaulted ctor
2. fix distance_to of random iterator
3. add distance_to all strided_iterator_impl
4. add constructor for specifying end iterator
5. make sure bidirectional iterator works correctly at the ends
fix bug: lu_decompose does not work if all elements including pivot are 0.