Implementing scraping of images from podcast feeds.

Added a model for images for these channels too.
Adding tests for PImage model and PImage usage in the Channel model.
Changing #getEpisodes in Episode model to return a query instead of executing it.

This will make allow code to build on the query easily, like populating the results of the query with the Channel model for example.
Adding a web route to return a channel's image.
Adding in channel images to the website.
Fixing a bug stopping images from being updated with soft-update enabled.
Switching the XML traversal method to cheerio instead of xml2js.

Cheerio will make DOM traversal easier on different kinds of XML feeds than xml2js, which should make the scraping more stable when more feeds are tried.
Cleaning up tests.

Removing uses of xml2js, instead opting for just loading xml files to strings. Removing unused variables. Removing unused packages. Deleting a few test data files and switching to consolidated simple ones in the data directory.
Fixing checking for an image in a podcast channel.

Running a cheerio selector that matches nothing will not evaluate to false, but will have length 0, so the check just needs to be changed from checking false-y to checking length.
Adding an assertion in saving updated episodes when the original episode does not exist.

Encountered in testing, not sure how the episode would have been marked as updated in the first place.