Refactor mobile javascript to get rid of console errors.

Fixes also mobile bookmarklet services.

Basically:
* Went through the whole mobile app checking for console errors
* Extracted mobile file uploader to own file, since it's only needed in status message creation
* Made sure "main" JS does not need to be loaded in status message creation by including I18n JS directly, instead of having to rely on the rest of the JS to run
* Removed unnecessary duplicate loading of mobile.js on a few pages

I would have liked to move the inline JS to JS files and maybe reorganize a bit better so includes could be used- but I think that should be another PR. This fixes actual bugs, ie bookmarklet service icons have not been working for a long time.
Given this is the mobile site, I think we should think about this a bit. My intuition would be to always load all JS that's required on any mobile page, and to only use one javascript_include_tag and sprockets requires for the other tags. The reason is that I think that requests are more expensive than a few kb extra that will be cached on the next request anyway, especially on mobile.