XmppUriHelper.parse() parses xmpp:, xmpp://, and xmpp:/// URLs

Parse xmpp URIs according to the RFC5122 and XEP-0147, but currently all
that ChatSecure understands is how to add a contact.  This parser will
parse the non-standards-compliant xmpp:// URL that ChatSecure used on both
iOS and Android to work around iOS's issue with xmpp: URLs.

refs #4092 https://dev.guardianproject.info/issues/4092
handle all incoming xmpp: URIs using XmppUriHandler.parse()

This currently just allows for adding a contact, but xmpp: URIs can do lots
of things, including join group chats.
tweak displayed xmpp: URL to work on more apps and follow RFC5122

The format of the xmpp: URL in the QR Code did not follow the standard, and
therefore only worked in ChatSecure-Android.  Chris Ballinger had previously
thought that xmpp:to@foo.com URLs didn't work in iOS but he has since gotten
them working.  Therefore it makes sense to use a fully proper RFC5122 URL to
advertise in ChatSecure.

refs #4092 https://dev.guardianproject.info/issues/4092
receive clicked im: URLs (syntax defined in RFC3860)

This provides a more generic URL format for clickable chat links.  It is
also a lot simpler than the xmpp: RFC5122 format since it does not have
"actions", only a to-address and a query string with key=value pairs.

https://tools.ietf.org/html/rfc3860

closes #4092 https://dev.guardianproject.info/issues/4092
move all strings to resources so they can be translated
purge unused AppPassphraseActivity
remove unused resources
sync landscape/portrait views for activity_lock_screen

Some of the updates to the portrait view were not applied to landscape.
set inputType where Android Lint suggests it

inputType overrides the older, deprecated things like:

  android:autoText
  android:capitalize
fix lint "Attribute is missing the Android namespace prefix"
fix lint "Invalid layout param in a LinearLayout"

"The given layout_param is not defined for the given layout, meaning it has
no effect. This usually happens when you change the parent layout or move
view code around without updating the layout params. This will cause
useless attribute processing at runtime, and is misleading for others
reading the layout so the parameter should be removed."
The locale folder "he" should be called "iw" instead

From the java.util.Locale documentation:
"Note that Java uses several deprecated two-letter codes. The Hebrew ("he")
language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish
("yi") as "ji". This rewriting happens even if you construct your own Locale
object, not just for instances returned by the various lookup methods.

Because of this, if you add your localized resources in for example values-he
they will not be used, since the system will look for values-iw instead.

To work around this, place your resources in a values folder using the
deprecated language code instead.

https://developer.android.com/reference/java/util/Locale.html
The locale folder "id" should be called "in" instead

From the java.util.Locale documentation:
"Note that Java uses several deprecated two-letter codes. The Hebrew ("he")
language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish
("yi") as "ji". This rewriting happens even if you construct your own Locale
object, not just for instances returned by the various lookup methods.

Because of this, if you add your localized resources in for example values-id
they will not be used, since the system will look for values-in instead.

To work around this, place your resources in a values folder using the
deprecated language code instead.

https://developer.android.com/reference/java/util/Locale.html
ImApp.setNewLocale uses new setLocale() method on >= android-17

Also, set the pref after setting the locale in cause of crash/exception
remove empty translations so they don't show up in the languages list

Soon, the list of available languages will be dynamically generated, so
empty translations would be misleading.
check status of pref.commit() otherwise just use pref.apply()

apply() does it in the background, but does not provide confirmation.
commit() provides confirmation, but is only useful if the return value is
checked.  apply() happens in the background and commit() in the foreground,
so using apply() should keep things more interactive. The SharedPreferences
docs recommend using apply() if the return value of commit() is ignored.
use system names for Languages preferences menu

Instead of maintaining our own list of the names of the languages, use the
Java names by requesting the "display language" of each locale in that
locale.  This makes only one menu item per language, there are no country
variants supported to keep the list short.  The exception is zh_CN and
zh_TW since there is generally no zh language.  We also have to manually
include 'bo' Tibetan since the system often does not support it.
remove unused strings
ImApp.checkLocale() removed unused return value

Just cleaning things up so it is easier to make sense of things...
don't use android.R.string, it might not have Tibetan and others