Changes:
* Major API changes to FXThreadPool: mostly, much more sane
implementation, and optional FXCompletion parameter passed to perform
wait on subset of tasks; see FXCompletion notes below.
* Added FXCompletion synchronization object. FXCompletion is now used in
FXTaskGroup, FXThreadPool, but can also be used in your own programs
whenever one thread needs to await the completion of multiple worker
threads.
* Fixed bug in FXJSON parser: properly stop parsing at offending
character.
* Byte order mark handling fix in FXJSON parser.
* Added toChars() API to FXVariant; it returns empty string unless variant
is of type string. This is very similar to asChars(), except that
toChars() is safe (always returns a non-NULL pointer).
* Renamed toPointer() to toPtr() in FXVariant for consistency.
* FXParallel implementation changes: don't kick off tasks via FXThreadPool
in ParallelFor if there's only one task. Also, split ParallelFor into a
number of pieces corresponding to the number of threads available in the
FXThreadPool, unless this number is passed explicitly.
* Ensured FXParallelForFunctor's are aligned in ParallelFor.
* Updated VC++ 2008 Visual Studio project files.
- Remove a patch that was applied upstream