AMD support

re-opening #612 for the 3.3-IP branch.

see https://github.com/umdjs/umd/blob/master/jqueryPlugin.js for source, and umdjs/umd#11 for a potential pitfall (not likely huge, but a caveat to note):

* if not using an AMD module loader at all, works as normal
* if using an AMD module loader to load jQuery, works as normal
* if a module loader is loaded after jQuery (i.e. jQuery loaded through a script tag), and before jQuery plugins like file-uploader are loaded with a script tag, this method fails. Simple solution is to move file-uploader's script tag to before the AMD loader's, or load jQuery and the loader as a plugin, or move jQuery script tag after AMD loader's