Removed unused method and forward declaration. Refs #7636.
Create the method outline for the uploadURL. Refs #7636.
Generate upload URL in ICat4. Refs #7636.

- In order to publish (upload/PUT) we need to know the dataset the user wants to PUT that file to. This is "calculated" in the `getDatasetIdFromFileName` method, which uses the related filename (extracted from path or workspace in the algorithm) & obtains the related datasetID.
Added `CatalogPublish` algorithm. Refs #7636.
Corrected indent in cmakelist. Refs #7636.
Added correct ICAT call to method. Refs #7636.
Fix compiler warning. Refs #7636.
Removed unused exception. Refs #7636.
Set encoding type. Upload now works correctly. Refs #7636.

- Added `IsDataFile` method to detect if the file being uploaded is datafile, in order to set the correct mode.
Merge remote-tracking branch 'origin/master' into feature/7636_icat_publish
Merge remote-tracking branch 'origin/master' into feature/7636_icat_publish. Refs #7636.

Conflicts:
	Code/Mantid/Framework/ICat/inc/MantidICat/ICat4/ICat4Catalog.h
Helper method to obtain file name from a given path. Refs #7636.
Added workspace property. Refs #7636.

- Removed unused headers.
- Forgot to remove `extractFileName` code from `exec`.
Encapsulate publish functionality. Refs #7636.
Upload of datafile works correctly. Refs #7636.
Let `saveNexus` take care of workspace groups. Refs #7636.
Merge remote-tracking branch 'origin/master' into feature/7636_icat_publish. Refs #7636.

Conflicts:
	Code/Mantid/Framework/ICat/inc/MantidICat/ICat4/ICat4Catalog.h
Added `setICATProxySettings` to publish method. Refs #7636.
Add publishing of workspace support. Refs #7636.

- If user has selected a workspace, we will save it to their default directory then upload that file to the IDS.
Add const to ICatalog and related classes. Refs #7636.