Total revamp of Markov data storage in the DB:

- Data is stored in much less space with one table instead of
  16 per personality.  Duplicate rows are simply inserted
  repeatedly rather than trying to have a count value; this
  doesn't actually seem to cost that much in practice, and it
  preserves the automatic-weighting aspect of word selection
  while simplifying the code and allowing fast execution.

- Corpus training of large amounts of text is extremely fast.

- SQL queries are used to find chains of any order from 2 to 5
  using a single table per person.  Chains can start with any
  length 1-4 words and be built with an independently-settable
  chain order forward and backward, unlike the original
  implementation which required the chain length and order to
  match.  This also simplifies the Python code logic.

- With proper multicolumn indeces, lookups are quite fast.

- With this and greatly lowering the recurse limit for bot
  chats, ?botchat takes much less time to run, just a minute
  or two usually, rather than several to dozens of minutes.
Remove stray code from the markovmixai module which is incorrect
for nikkyai and would have thrown an argument count error
Pattern table cleanup