chore(client/js/handler.xhr.api.js): strict mode
test(test/raytest-jquery.html): optionally pull in json2.js to test S3 uploads in IE7
feat(client/js/s3/util.js): #899 - utility functions to support older browsers
feat(client/js/util.js): #899 - move some common form uploader stuff into common util file, may relocate this to a more specific location later
feat(client/js/s3/uploader.basic.js): #899 - integrators need to specify a same-origin url for Amazon to redirect to on success from a form-based upload
refactor(client/js/handler.form.js): #899 - delegate to common util functions
feat(client/js/s3/handler.form.js): #899 - start of form-based uploads directly to S3
feat(S3 form uploads): #899 - move common form handler code into a new constructor/file
feat(S3 form upload handler): #899 - handle failure of upload better
fix(client/js/s3/policysignature.ajax.requester.js): #899 - don't attempt to log an error from the server if empty response
This may occur if the server or some middleware simply sets the response code and leaves the payload empty or unparseable.
test(test/unit/s3/util.js): #899 - test new S3 util functions
feat(client/js/s3/util.js): #899 - use MDN date.toISOString shim instead
chore(client/js/handler.xhr.js): Log XHR upload response status and text

This should be enormously helpful when assisting a user with an incorrectly configured server or a server-side script that is not returning a valid response.
docs(docs/integrating/options/s3.jmd): #899 - successRedirectEndpoint request property, adjust TODO
docs(S3-related): #899 - TODO notes for required 3.8 adjustments
fix(docs/integrating/quickstart/index.jmd): Don't hardcode FU version in link tag
docs(docs/server/s3.jmd): #899 - server-side documentation
docs(S3 docs): #899 - fix doc generation
closes #899 - merge completed upload to S3 via old browsers feature into develop branch