Refactor source strategies to remove the `canonical_url` method. `canonical_url` returned the URL that should be used as the source of the post after upload. Now we simply use `Source::URL#page_url` to determine the source after upload. If the source is an image URL that is convertible to a page URL, then the image URL is used as the source. If the source is an image URL that is not convertible to a page URL, then the page URL is used as the source. This simplifies source strategies so that all they have to care about is implementing the `Source::URL#page_url` and `Sources::Strategies#page_url` methods, and the preferred source will be chosen for posts automatically.
Components
Components are used to encapsulate common UI widgets used throughout the site. This includes things like comments, tag lists, post thumbnails, paginators, and other things used repeatedly throughout the site. Components encapsulate a widget's HTML, CSS, and Javascript together so that all the code for a component is in a single place.
This uses the ViewComponent library.
Components are similar in concept to React components.