Initial implementation of ShellDispatcher::alias().
Refactor shell finding so aliases do not overwrite app classes.

Aliasing a shell plugin should not overwrite a core/app shell. Instead
aliases should be fallbacks for when a core/app class cannot be found.

Refs #3325
Clean up code that supported using non-Shell objects.

I think we can remove support for running non-Shell shell commands now.
Fix failing tests on case-sensitive file systems.
Correct doc block
Merge pull request #3358 from cakephp/shelldispatcher-alias

3.0 - Add Shelldispatcher::alias()