Use aligned_decomposition in scan's implementation.
Add reduce_intervals.hpp
Use uniform_decomposition in reduce_by_key