Splitting clients into an their own exe.

(Where "clients" == "that single command line client I kinda wrote, Isql.cs")
Windows Phone 8 dll added to main project.

Just adding so that I can link to the build directly for those who want it.  Will probably add other versions of the dll later.
README update, now with usage instructions and a link to the WP8 dll.
Minor: ISQL now ignores commented out lines.
Adding support for IF EXISTS to DROP TABLE.
NOT NULL in AUTOINCREMENT tolerated and PRIMARY KEY actively declarations ignored.

So stuff like...
CREATE TABLE `addys` (
  `id` INT(4) NOT NULL AUTO_INCREMENT DEFAULT NULL,
  `addy` CHAR(254) NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
);
... now works without throwing errors.

Also notice Trim('`') calls in CreateTable and DropTable Commands now to tolerate MySQL style backticks around column and table names.

These and the previous checkin's changes are mostly motivated by use of wwwsqldesigner (http://code.google.com/p/wwwsqldesigner/) to design schemas.  The SQL created by that tool, which is MySQL friendly, should be better supported now, though why it defaults to nullable TINYINTs for ids, I have no idea.

Also minor changes to some markdown docs.  TODO: Really should add tests so I know I'm not checking in non-Scottish code.
Quick fix for default lengths, & ISQL takes multiple cmds at once.

CreateTableCommand has a catch-22 with lengths and column types, as some column types "turn into" others when they're only one byte long.

Before, when SqlDb# assumed that you had a length for everything, that wasn't so bad, as we'd just error out if anything was wrong. Now, with default lengths, we have to be more careful.

For now, I'm just ignoring negative lengths in InfrastructureUtils.colTypeFromString, as that *should* mean the col will receive default length later, which, obviously, will be fine.
Add null check for INT column modifiers for CreateTableCommand.

Was blowing up on simple column definitions without "modifiers" after column length.
Brute force removing naive AND and IN checks in WHERE processing.
[Potentially less in-]Correctly handling TINYINT type.

Some other improvements around single byte column types.
Getting rid of code around strange BYTE type that was originally in there for some poorly considered reason.
Slowly considering a legitimate BIT type.
Kludging BIT column type support through TINYINT for now.

Need to remove kludge and implement a legitimate BIT type; currently there's no QA to ensure the value inserted into the col is a 0 or 1.
But this is better than no support at all for now, I believe. It at least creates the tables with BIT types and allows limited (rather, "overly permissive") usage.

Note that the old, weird BYTE stuff is almost completely removed, minus the ByteSerializer, which I probably should've removed as well.
Returning row ID on INSERT, b/c it's sitting right there.

We were returning a worthless bool before, and the ID is just sitting there, so there's some added utility in returning it.  Not exactly MySQL compliant, but not that hard to add to a CommandParser stand in for MySQL if you wanted to.
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
Fixing dumb mistake in ScrubValue; PascalCasing static methods in Utils.

Also changing dll to target AnyCPU, not x86.
Replacing strSql.Replace("''", "`") kludge with something only marginally better.

But not much better.  Wasn't handling '' very well when it meant an empty string, like...
UPDATE jive SET City = '' WHERE Id = 7;

Was inserting the backtick instead.  Dumb.
Isql kludge to set database using full path on Windows C drive [only].

Non-destructive, but should use a platform agnostic/anticipatory method instead.
In prog hack for multiple fuzzy names in single SELECT for the same col.

Haven't really tested.  Random statement checks worked, and thought I should check it in before it gets worse.  ;^)

Should eventually hack to allow true aliases for columns.  For now, doing this to allow "original" column names in INNER JOINs (to be implemented).  Plan is to kludge the INNER JOIN subSELECTs to select all cols + joined cols by name used in the ON clause.

Btw, this is why you never kludge something like JOINs.  Oh, well, MVP, yo.
Allowing JOINs to use "original/full" column names in SQL.

The deal is that the way we mvp'd INNER JOINs before, we'd always fall back to `SELECT * FROM TableToJoinTo` to get the new table's information, but the `*` would bring back shortened column names for "fuzzily named" columns.

So if we joined on the full/CREATE TABLE column name, we'd have problems.  Eg, If "LongerNameForFKId" is the name for a 4 byte field, `SELECT *` would only bring back "Long" as the column name, and "INNER JOIN NewTable on OriginalTable.id = NewTable.LongerNameForFKId" would bork.  ("INNER JOIN NewTable on OriginalTable.id = NewTable.Long" would work)

See?  Isn't this easier?  (See previous checkin for prep, and SelectCommand for the operative change here.)  Do note we get a bonus column coming back (the "Long" col again under that shortened name), and still can't limit what columns are returned from the second table.

That said, the "fuzzy" naming is quickly moving from a clever-ish file format idea to a pitr.
Added check for table prefixes in joined column names.

This is a kludge to make joins easier.  Need to check and admit that's the problem when they aren't included.  Should fix.
Adding ColumnNotFoundException type. Trivial usage added.
Added config file & start-up database location setting.