Discover when .net 4.0 is not installed and give a proper error message

Fixes http://teampulse.telerik.com/view#item/281235
Merge pull request #587 from Icenium/totev/net40

Discover when .net 4.0 is not installed and give a proper error message
Fix plugins commands

Change platforms property of IPlugin from string[] to Server.DevicePlatform[] type. Add try-catch when fetching data for specific plugin - this way if we fail while fetching data for one of the plugins, information about rest of them will be shown to user. Add test to verify plugins data will be shown correctly when we are unable to get data for one of the plugins.

Change url to MarketPlace to use https instead of http.

Fixes http://teampulse.telerik.com/view#item/280934
http://teampulse.telerik.com/view#item/280394
Merge pull request #586 from Icenium/vladimirov/fix-plugin-commands

Fix plugins commands
Forbit plugin commands for projects which are not Cordova

Fixes http://teampulse.telerik.com/view#item/281349
Merge pull request #591 from Icenium/totev/forbid-corodova-plugins

Forbid plugin commands for projects which are not Cordova
Implement chunk upload

Add MultipartUploadService. It is used to upload files larger than 50 MB. Add HashService which is used to generate the hash for a file.

When the zipped project is bigger than 50 MB we often receive ECONNRESET error as such big file cannot be uploaded. So we upload it by chunks by using the server api. The file is validated with its hash, so we calculate it and send it to the completeUpload call. Currently the server does not verify each chunk hash.

Add tests for MultipartUploadService and HashService.
PR comments - refactoring

Add some overloads of getFileHash method in IHashService - this way in case you try using it, you'll receive information about supported encodings. Remove public CHUNK_* parameters from IMultipartUploadService and set them as private static inside MultipartUploadService. Moved CHUNK_UPLOAD_MIN_FILE_SIZE as private static param of BuildService.