Distinguish non LEAP provider and down provider.

I've set ProviderAPI to show its own toast depending on the exception
that getStringFromProvider issues. If the socket timeout reaches its
end, a toast different from when an IOException or a MalformedException
occur.
Shows certificate error message.

If a download didn't occurr due to an IOException, we assume it was for
an SSL error and notify the user telling him/her that LEAP provider is
not trusted.
Substituted IOException by SSLHandshakeException.

In getStringFromProvider, there is no IOException but an
SSLHandshakeException. Substituing this gives our code more semantics.
Back to IOException instead of SSL exception.

The previous commit broke functionality, and instead of discarding it
I've decided to undo with a new commit for future references.

It would seem that IOException can be substitued by
SSLHandshakeException, but the previous commit proves it cannot.
Untrusted message is not shown if danger_on = true

I forgot to add an else in the IOException from getStringFromProvider.
This was causing that even if the user checked the trusted completely
beckbox and everything was fine, the "not trusted provider" message was
being shown.
Pressing back button, we don't choose any provider

Once in the provider detail fragment, if the user presses the back
button, provider.json is removed from sharedpreferences (so that
Dashboard does not start as if the user had selected the canceled
provider) and ConfigurationWizard gets the focus.
Back button from ConfigurationWizard quits.

If the user decides not to choose any provider, the app quits. I'll
create another branch to handle this exit properly, warning the user
with an AlertDialog as suggested in #3023.
ProgressDialog works ok when discarding providers.

If the user selects a provider, gets into provider detail, discards it,
further trials of selecting a provider trigger the same ProgressDialogs
than the initial trials.