Infinite scrolling for UITableView in Swift, with background thread to request new data, and loading footer.