Appbuilder server moved to subfolder. Compensate for it.
Merge pull request #530 from Icenium/totev/appbuilder-subfolder

Appbuilder server moved to subfolder. Compensate for it.
Replace retryCount with timeout

Move timeout option to common options. Update common lib where the following change is applied:
When starting Android emulator we were using --retryCount option, which is difficult to be explained. It it replaced with --timeout option, which is the allowed time to start the emulator device(wait to boot). The default value is 120 seconds. retryCount option is removed as it is not used anymore.
Update help and error messages.

http://teampulse.telerik.com/view#item/278845
Merge pull request #526 from Icenium/vladimirov/remove-retryCount

Replace retryCount with timeout
Use master of fibers repos

Update package.json to use master branches of node-fibers and mocha-fibers repos, so we can test the changes that are applied there. Release branches should be used only in release state.
Merge pull request #529 from Icenium/vladimirov/fix-fibers-dependencies

Use master of fibers repos
Fix --save-to option

We are validating all -- options. Options which have dash ("-") are added by yargs in two ways, in this case --save-to is passed to our code as save-to and saveTo. As we have not added saveTo to known options, trying to use --save-to fails. Added saveTo option to knownOpts. Added test that verifies all options, which have "-" are added correctly to options (in both ways).
Merge pull request #532 from Icenium/vladimirov/fix-save-to-option

Fix --save-to option
Detect corrupted .abproject file and give a helpful message to the user

Fixes http://teampulse.telerik.com/view#item/278660
Merge pull request #533 from Icenium/totev/broken-abproject

Detect corrupted .abproject file and give a helpful message to the user
Add validation for command parameters

Add validation for the parameters that each command accepts. Add logic to check if command has mandatory parameters and all of them are provided - if any of them is missing, command is not executed. Add logic to validate all arguments passed to command - if the command does not accept arguments, but there are some passed to it, it is not executed. Add ICommandParameter interface to describe command parameter. Add allowedParameters property to ICommand interface. Add canExecute method to ICommand interface. It is not mandatory to implement it and it is used when the command will validate the parameters on its own. The common validation is implemented in CommandsService.

ICommandParameter describes one parameter that the command accepts. It can be mandatory for the command or not. That's why I've added mandatory boolean parameter to the interface. Each parameter have its own logic for valid values, that's why ICommandParameter has validate method. It is called from the CommandsService when the arguments are validated. CommandsService itself tries to validate all command arguments. One special case is when the command is hierarchical. In this situation the root command is validated first, but it doesn't have own definition, so it doesn't have allowed parameters. That's why CommandsService checks if the command is valid hierarchical command.  If command has canExecute method implemented, CommandsService will use it to validate the arguments. If not, it will try to validate all passed command line arguments with the allowed parameters of the command, by checking their count, calling validate method, etc.

Each command has different number of allowed parameters. In most of the cases the command parameter is string and the only requirement for it is to be non-empty. That's why new StringCommandParameter class is added. It is used to define such parameters. In case the parameter has more complicated logic, new class, that implements ICommandParameter is added for it.

Remove all helpers.registerCommand calls. Remove registerCommand methods. Add tests for CommandsService and some stubs.
PR comments - refactoring

Move some commands to command folder. Rename cloudProjects file to cloud-projects. Rename remote-projects to remote-projects-service and moving it to services folder. Fix command parameters validate method to return IFuture<boolean>. Multiple smaller fixes (spelling errors, indentation issues, etc.).
PR comments - fix errors

Fix samples commands by using correct filename in bootstrap. LiveSync uses constructor injection for StringCommandParameter. CloneSampleCommand has one mandatory parameter.
Fix plugin commands

Add command parameters to plugin commands and canExecute method to AddPluginCommand. This command has some strange logic - it accepts parameter, but it also accepts --available option, but if neither of them is specified, the command should fail.
Small Fixes

Fix some small issues which are found during review.