Fix invalid argument for foreach() in relationships command when offline.

Also removes uncaught exceptions when offline for environment commands.
Don't cache an empty list of environments.
Refactor filesystem, Drush, shell utilities.
Fix drush aliases writability check
Convert Drush class to a console helper
Start automated tests
Test FilesystemHelper.
Use the Symfony Filesystem component
Fix name of DrushHelper file
Add --force-symlinks option to platform build.
Test ShellHelper
Remove check for is_dir in symlinkDir, and hide makePathRelative.
Remove old import
Use the Symfony Process component.
Clarify build errors after get.
Keeping up-to-date
Don't delete the _local alias just because the www symlink no longer points to a build.
Symfony Filesystem::symlink() only works with directories.
Always copy if there is no symlink() function, and always use absolute paths on Windows.
Test shell with a command that will work on Windows too.