Update WP8 dll in master branch's bin folder.
Removing testing paths and obsolete test Main methods.
Fixing a sql parsing bug on WHERE comparison construction.

Wasn't ignoring comparison characters in string literals.
Exceptionally laconic method to add "SELECT MAX(field) ..." (see below)

Not currently supported with GROUP BY.  Just a single field can be MAXed currently.  Very hackish, but that's by design.

I'm not sure how I feel about having a Command type dedicated to a subset of SELECTs with a particular function, but I don't think it's Wrong (c) 2014.

May want to be more lenient about how you sniff MAX() calls in the future.  Right now, only statements starting with "SELECT MAX(" will trip the SelectMaxCommand.
Adding license header to SelectMaxCommand.
First cut at adding composite UPDATE column value support for INTs only.

Eg now you can use a more complex SET clause for a column like...
UPDATE table SET col1 = id + 8 - col2;

Previously (and currently with all column types other than INT), you had to select a constant value or a single column.
UPDATE table SET col1 = 5;
UPDATE table set col1 = id;

See added CompositeColumnValueModifier and changes to WhereProcessor, BaseSerializer (see addRawToStringRepresentation and addRawToRaw), and then IntSerializer for one implementation.

I reserve the right to backpedal on method and class names.  Some of those are getting painfully long here.

Not horribly well tested yet.  I'm also probably going to take a while to update the rest of the col types, since my immediate need is just INTs.  Happy to field pull requests.  ;^)
Moved extension methods out to separate project.

Extension methods can be found here:
https://github.com/ruffin--/RufworkExtensions

Note that dll in lib folder is for Windows (and not Windows Phone).  Please rebuild for other platforms.

From readme in lib folder:
I wanted to keep this project completely free of 3rd party libraries or even of
external dlls as long as possible, but there's just enough headache with these
extensions, both with respect to code licensing and versioning with my other projects,
that I figured I'd split it off into its own project.

Apologies for the overhead.  The code to RufworkExtensions.dll can be found here:
https://github.com/ruffin--/RufworkExtensions

I'm going to place a Windows version of the dll (not Windows Phone; strict Windows) in
the lib folder as well.
Fixing bug where UPDATEs by constant ignored negative signs for INTs.
Trivial updates to README, incl link to HexViewer for Mac via Mono.
Added hardcoded retries in case of table (file) locking.

Note retries in WhereProcessor and TableContext, the latter basically where we're INSERTing.

This really isn't a pretty solution, but I'm not sure it's the wrong one. Should at least allow for timeout changes. Not sure how I feel about the geometric increase for the delayFactor either.

Could use FileShare for reads, for instance, though there are edgy things to worry about.
ISQL/dataTableToString results made one line per row by truncating text.

This is a quick hack. We're already passing through the rows twice, so we should be able to optimize even more exactly
without harming performance much worse than we already are.
Bug fix in dataTableToString text resizing if on last column.

If you have extra space on the last column, you 1.) can't very well `/ intColsLeft`, as that's divide by zero, and 2.) It's too late in the one-pass sizing to save any space anyhow.
Allowing MySQL compliant INNER JOIN syntax. Various clean-up (see below)

Started compiling release notes.
Starting to replace `Console.Write`s with `SqlDbSharpLogger.LogMessage` so that they're easier to reroute.
More details on JOINs in release notes.
Kludge for ensuring INNER JOIN field/col from "primary" table exists.

See `qColsToSelectInNewTable.EnqueueIfNotContains(strNewField);` from _processInnerJoin in SelectCommand to see how the "primary" table is treated differently.  Just need to do the same thing for the initial DataTable to remove this kludge.

That said, this just again goes to show that the way I'm parsing SQL is inane. As I've mentioned earlier, borrowing Irony (https://irony.codeplex.com/) would be smart, I think.
Removing case sensitivity from table prefixed fields from JOINs.

Also noting that we're downstream of full statement when going through JOINs, and don't keep track that we use all fields from original SQL statement.  (If we don't, an error should be thrown.)
Completing last checkin: Case sensitivity removed f/ JOIN SELECT fields

Had only done the ORDER BY fields in the last checkin.
Hacking in an option to suppress logging output.

Still need to clean out existing Console.Write[Line] usage.
Fixing joins where there's no overlap between tables.

Trying to think if I should return a row-less DataTable with the proper columns instead of the empty DataTable(), but this'll work for now (and not break
code that expects a DataTable even when nothing's returned -- usually you're checking a Rows.Count to see if it's empty, not specific Columns).
Quick comment before moving to WP8 for merging.
Updating Windows Phone branch to latest.

Note that I'm incorporating the Extensions project (https://github.com/ruffin--/RufworkExtensions) into the WP8 project directly so that
THE WP8 PROJECT HAS NO DEPENDENCIES.

Also renamed the Main.cs file, which I should do in the "real" project.

Have not tested a ton; just a quick trial on a WP8 project that wraps the dll.

Merge branch 'master' into WP8

Conflicts:
	BinaryReaderPlay/BinaryReaderPlay.csproj
	BinaryReaderPlay/org/rufwork/mooresDb/infrastructure/InfrastructureUtils.cs
	BinaryReaderPlay/org/rufwork/utils/Utils.cs