Re-implement feature detection using getFeature() (bug 1097424, bug 1097429)

https://bugzilla.mozilla.org/show_bug.cgi?id=1097424
https://bugzilla.mozilla.org/show_bug.cgi?id=1097429

- Since getFeature() is a privileged API, this is only used in Firefox OS, and only from the iframed app.
- For now, only a very limited subset of features are detected, the rest are always set to true.

This needs tests, but I'm running out of time for today so submitting the PR to get feedback. The iframed app is untested anyway (and difficult to test) so there is not much missing.
even if `Promise` may not be exposed, you should theoretically be able to interact with `navigator.hasFeature` even if it uses Promises under the hood. I realise `navigator.hasFeature` has shipped *after* Promises support has already landed, so this is a moot point. but just thought I'd mention that.