Resolves #4228
A couple fixes related to runs pagination.
- Paginating backward on a pipeline's Runs tab does not work. This is because the route is defined with component, which remounts every time it is rendered. It should be a render prop instead.
- Our slicing is off by one in all cases. We retrieve limit + 1 results to determine whether we need "next" pagination, but then we're setting the next cursor based on the sliced-off item. We therefore never show the sliced-off item at all, since it doesn't appear in the next page. Fix this by using the limit item as our cursor.