Added some documentation and moved ShortenTags.
* BooruTools.cs: Moving around some code.

* ChanTools.cs: Documentation updates.

* UrlTitling.cs: Work to get away from static classes and fields, to
  make it possible to run multiple Meido's in a single process.
* DomainLists.cs: Make the fields use arrays, since once the "lists"
  are loaded they're not changed. So read the file first into lists
  and afterwards convert those to arrays and assign them to the
  appropriate fields.

* ExtensionMethods.cs: Replace if-else with a switch and add a
  GetOrAdd extension method.

* MeidoBot.cs:
* MeidoCommon.cs: Add support for easy string.Format usage, like with
  Console.Writeline, to the various ways of sending IRC messages.

* UrlTitling.cs: First one to make use of the new formatting
  capabilities.
* ChanHandler.cs: Change checks in relation to changing ChanTools.

* ChanTools.cs: Make Subject and Comment be an empty string instead of
  null if a post doesn't have them.

* WebToIrc.cs: Use the same UrlTitleComparer for all channels, across
  all servers.
* RandomChoice.cs: Changed so that are no static fields interfering
  with possible multi-Meido, multiple servers, scenario's.
Also made some code clearer/nicer.

* WebToIrc.cs: Move the handling of generic URLs (those not handled by
  specific handlers) into it's own function. Also have extra checks to
  skip the computation of urlTitleSimilarity if unneeded.
Also renamed a variable to a more descriptive name.