Fix drafts being shown for deleted programs.
Fix draft not being removed from UI if program deleted from search results
Fix location hash pointing to deleted program after program deletion
Fix program not being removed from recents when deleted from search results
Fix recent-programs not updating on program type change

* Add a custom renderer to recents as a data-element.
* Add a DOM-based data-id to recents so programDataUpdated finds it
* Rerender row using the custom renderer if it's provided in the row
Fix recent program removal not removing same program from search results

* Use the matching data-id's in searchPageApi.programDeleted to remove all matching rows.
* We still need to call loadRecents() after the animations to ensure that the header is removed if the recent program list is empty.
Fix episodelist when have preloaded episodes but there are none

This happens when the last episode is remove from a series and the removal is done from within the episode list.
Fix refreshing UI state when tv-episodes are recategorized

Need to possibly refresh:
* The series that the program belonged to
* The series that the program now belongs to
* The program search result row itself
* Recents (these are now handled by searchPageApi.programDataUpdated)
Fix series not updating in search results if episode deleted in search results