Case insensitive names & ability to remove a plugin

This is primarily an attempt to fix #141 (accidental overwriting of a plugin) which was caused by a case sensitive check for plugin owners.

However, fixing this requires the ability to remove the offending plugin. Which means that #88 needs to be solved at least through an admin action. This is the harder part, and this PR really exists as a review for the code involved in this portion.

Once this lands, we can also fix #138 (spam plugins).