Rename hierarchical_kernel<> to assignment_kernel

And some simplifications of how they are called
Remove hierarchical_kernels.hpp, move its contents to assignment_kernels.hpp
Some reformatting
Implement a kernel_request_t mechanism which can also get strided kernels