restructure the upgrade shell to be task based

one task per operation, and the logic will now be looping on files and
doing all operations at once on a file - instead of all operations doing
whatever they like, resulting in searching for and looping on files
multiple times
add task for moving files
make methods return boolean success

rename write to commit
correct visibility
add namespaces task
cheat for now

make sure it's the same instance - it isn't currently
Add AppUses task
remove the leading \\
too much verbosity
fix the use weirdness

in the case of App::uses('Foo', 'Plugin.Bar/Zum'); it's expected to end
up with:

  use Plugin\Bar\Zum\Foo

That wasn't happening though, instead there'd be some interesting
str-replace logic resulting in:

  use Cake\r/Zum\who\knows
update change to return false on noop

that way, it's easier to konw if something happened or no
implement rename classes
add fixture upgrade task
adding last upgrade shell task