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.
I consider them as configuration details of the service and it seems nice that you can change them. If I make them static and we want to upload some other files (not the zipped project) with different chunk sizes, we will have to implement entirely new service for the same operation. But if we use them as defined here, we can use the same service and just set the required sizes.