3.0 - Add plugin shell.

It symlinks / copies plugin's assets to app's webroot. Thought this might be handy to use in deployment tasks.

One issue I am having is with plugins with vendor namespace. The task first creates directory for vendor name and then proceeds to create symlink for the plugin's webroot inside it, but it fails resulting in folder being copied instead. 

If the directory for vendor name exists beforehand the symlink is created without problem. So for some reason php doesn't seem to realize the directory exists when it's created by the script itself. Using clearstatcache() doesn't help.
> Would be useful to have the option to ignore/delete existing conflicting files/links - especially if the copy mode has been used - otherwise you can't update/correct existing files.

This particular statement checks if symlink already exists. If the symlink already points to required target directory than creating it wouldn't have any benefit. If it doesn't then it most likely is intentional that it's pointing to another location in which case it wouldn't be wise to delete it.

> As @lorenzo also mentioned it'd be a good idea to move the body of this foreach loop to a separate function

When lorenzo suggest breaking thinks up in separate method everything was done in this single method. I have already moved different file system operations into separate method. But I guess to could add another parent method `_processFolder()` too as you suggest.