refactor upload progress

This PR introduces a capability based test for upload progress visualization. It also moves all progress UI changes to a separate set of callbacks that is only registered when the browser supports the necessary events.

The diff looks ugly, but I actually did not change much. Two questions:
1.) where do we put thinks like the helper method `supportAjaxUploadWithProgress()`? I added it to the top of file-upload.js because I think it is only related to upload and does not need to be present in most other apps. We could put it into `core/js/compatability.js` ... but ... I need an opinion on that ... seems cleaner.

2.) further down I stumblede over the function definition for `$.assocArraySize()`. Where do we put that? In js.js we already have `$.fn.selectRange` and I submitted a PR for `$.fn.exists` ... should we move that to sth like `core/js/convenience.js`?