Sql

Here is a very early look at some deep refactoring that I am doing on the sql commands. Specifically, I created a SqlBase class and Sqlmysql, Sqlpgsql, etc. that inherit from it and hold variants for each DB driver as needed. So, we  now have methods like $sql->query(), $sql->drop(), $sql->connect(), etc. This is analogous to the Role commands, and uses the same drush_get_class() system which is enhanced here so that classes can vary by things other than major version (i.e. DB driver). The code is ready for early comments but not at all ready for review.

This refactor has me touching pretty much every line of sql code and cleaning as I go. One thing that I have not thought much about is how we support the sql-sync feature (and a few others) where we don't require Drush to be installed on the remote side. This is a neat feature, but I think it is less useful now than it was. To some extent, we have won and Drush is installed or can be installed on any web server where Drush runs. Would anyone object if I dropped that feature (perhaps temporarily), in the interest of cleaner code?