hlists: Avoid appending and use a reverse list instead and make it simpler

This way we just need to prepend. So yeah, going right is O(1) now. Still
need to fix dow, though, that returned object is ugly.