Refactor and add Gzip

Refactored the code for reuse. Moved a lot of strings to constants.
Refactored the PostJSON method to allow different result objects to be
returned from different operations e.g. index and bulk index.
Extended the BulkIndexJSONFiles method to check the response result and
log any errors. Moves the files to a processed or failed folder after
attempting to bulk upload. Allows you to Gzip the string in the file to
reduce file sizes.