Rename Artist#find_all_by_url to url_matches and drop previous
url_matches method, along with find_artists and search_for_profile.
Previously find_artists tried to lookup the url, referer url, and profile
url in turn until an artist match was found. This was wasteful, because
the source strategy already knows which url to lookup (usually the profile
url). If that url doesn't find a match, then the artist doesn't exist.
Make <role>_only methods check the role first and ip bans last. This
avoids hitting the database for anonymous users, since they'll always
fail the is_<role>? check before the ip check.
* Replace AnonymousUser null object with a readonly, unpersisted User object.
* Default always_resize_images to true (previously it was true for
anonymous users, but false for new members).
* Default comment_threshold to -1 for anonymous users (previously it was
0 for anonymous but -1 for new members).
* `legacy_normalize` came from c6012535, which is no longer a problem.
* `normalize_for_search` is only used for "[mass edit]" links
in artist entries. These links are a shortcut for performing a
`-artist_name source:<artist_url> -> artist_name` mass edit to tag
untagged artists, but this won't work for most sites these days.
* Allow using ApplicationRecord#attribute_matches to search text attributes,
and standardize models on using this instead of duplicating code.
* Remove restrictions that limited wildcard searches to Builders only in various places.
Fixes the 'Approve' link in the modqueue and in the quickmod bar being
shown as available on the approver's own flagged uploads, even though
they can't actually approve these posts.
* Restore behavior of thresholded comments being greyed out (lost in 6fa0ae2cf).
* Set the `below-threshold` class for thresholded comments in the html instead of in javascript.
* Remove `include_below_threshold` param; it was always true when clicking "Show all comments".
/tag_implications was changed to filter out inactive implications by
default when the `status` param wasn't given.
This broke "Link to implication":/tag_implications?search[id]=NNN links
inside pending implication requests in forum posts. These links now
return an empty search instead of the pending implication.
Hiding inactive aliases/implications by default also changed the API behavior.