A clean way to do multiple types of UITableViewCell in a single UITableView without if/switch-case