Fix src and dest indexes in DispatcherOperation ctor

The source and the destination indexes are confused. The source index, which
is the second parameter, should be 0 and the destination index, which is the
fourth parameter, should be 1.
Dispatcher.PushFrame: clean references before return

The dispatcher did not clean references before returning, therefore
the second call to Dispatcher.Run() failed.
[runtime] Simplify the io-layer threading code a bit more.
Dispatcher: Run() can be used more than once

When Run() was invoked a second time, main_execution_frame had the Continue
flag set to false. So it did not work correctly.
Dispatcher should stop if Continue is false

If the dispatcher encounters that frame.Continue is false, it should return
immediately and do not try to execute anything. The unit test may be seen as
rather artificial, but the problem may happen in more realistic situations
when frames are unwound.
InvalidOperationException in Dispatcher.RunFrame

When a Dispatcher exits due to 'frame.Continue' being false, it does not
clear queue_bits. As result, the next run of the Dispatcher could try to
dequeue a non-existing dispatcher operation.
Dispatcher should process a higher-priority task

When a higher-priority tasked appeared in the dispatcher queue, the
dispatcher stopped processing of the current queue but moved to a low
priority queue instead of processing the most high priority queue.
Merge pull request #886 from dmpot/master

[WindowsBase]: 6 fixes to Dispatcher
[corlib] Throw correct exception when array::copy elements don't match
[corlib] Clean up array binary search argument checks
Update Microsoft.Build.*.csproj files

* Updated source files and references in existing projects and added projects
  for xbuild_12 profile in
    - Microsoft.Build.Engine
    - Microsoft.Build.Framework
    - Microsoft.Build.Tasks
    - Microsoft.Build.Utilities
    - Microsoft.Build
    - Mono.XBuild.Tasks

* Created csproj files for all profiles in mcs/tools/xbuild
Add new assembly Mono.XBuild.Utilities

* Added new assembly Mono.XBuild.Utilities and moved classes from
  Microsoft.Build.Utilities into the new assembly and made them public to
  enable unit-testing.

* Renamed DirectoryScanner to DirectoryScannerBase and made it an abstract
  class, so the hard dependency on TaskItem can be removed, which was necessary
  to move it to the new assembly.
  An implementing class TaskItemDirectoryScanner has been created in
  Microsoft.Build.Engine and is linked in all assemblies that need the service.
  Future development may consider creating a differnt subclass in
  Microsoft.Build assembly, where DirectoryScanner works with other objects
  than TaskItem.

* UnknownToolsVersionException has been freed of its dependency to class
  Engine, so it can be moved to the new assembly.

* The classes that moved to the new assembly have been removed from the sources
  lists of several assemblies, which in turn have a reference to
  Mono.XBuild.Utilities now.
Update .csproj files for new assembly Mono.XBuild.Utilities

* Updated all references and sources to reflect changes due to new assembly
* Added csproj files for new assembly
Move ProcessService et al. to Mono.XBuild.Utilities and make it public

... to enable unit-testing.