S3ImageCropWidget v2.0

This widget includes the following enhancements or features:
* Improved UX.
* Cropping done completely at Client-Side. 
* Once cropping is done, you can see the Image cropped before even uploading.
* Fixed bugs or defects.

- This has been tested on modules like document, staff, volunteer and person registry in the default template.
- This is being used only with Documents module for now, because I am not 100% sure if this would work on a public server because Canvas has some CORS issues when it comes to converting images or canvas to DataURL. It works on my local machine but I am not sure of a public server. So I've not deprecated S3ImageCropWidget as of now, and I've kept a separate, totally awesome, v2 of it. Maybe the Demo Server would be a good place to see if this works :)
So this configures the canvas size - but where can I configure the desired maximum size of the upload image (which could be greater than the canvas), or control mandatory scaling/cropping. This logic is not entirely clear here.

We would (optionally) define a maximum width/height - and it'd be up to the user to decide whether he crops the image to that size, or have it scaled afterwards. But even if we do not define a maximum size, the user should still be able to crop (=select a subsection of the image for upload).