Clean up enabling/disabling NTLM and Basic auth types

The use-ntlm property has been deprecated for ages. Use
soup_session_add_feature_by_type() to enable NTLM instead. And use
soup_session_disable_feature_by_type() to *disable* Basic auth, if we're
not supposed to be using it. Otherwise, it gets in the way of our GSSAPI
hacks.

Leave Basic auth enabled for NTLM though, as it's a useful fallback
there that people have been using.

(cherry picked from commit b6ff74a490c9ec873224cc7ebd2afdcd35d385e1 and
 subsequent fixes in commit 377da62321797a9492de475aa1e59015bee487d1 and
 commit 2b586f551585e9db47ed6e8787892b5630b1c22e)
Clean up logging slightly and make it more consistent

[dwmw2: Some further cleanups and reduce duplication]

(cherry picked from commit ffaa22b8c630a770cb7e1eb7112a558a31897f89)
Add camel_ews_settings_get_auth_mechanism() helper function

The auth-mechanism string is not fun to deal with. It can sometimes
be NULL and sometimes an empty string for NTLM, and I've managed to
screw up even the *simple* cases, comparing for "BASIC" and then "Basic"
in subsequent broken commits (b6ff74a4, 377da623) instead of "PLAIN".

Make it nice and simple. Hard-code this knowledge about the strings in
*one* place, camel_ews_settings_get_auth_mechanism(), and return an
enum. Which in turn will help us to ensure we handle all cases, in
places where that's appropriate (such as in
e_ews_connection_utils_get_without_password())

(cherry picked from commit 4292fe89dee27d966fdce63849304f062a2a489c)
Clean up Negotiate auth implementation to be a SoupAuth subclass

It would still be better if libsoup did this for us (cf. bug 587145) but
this is at least slightly cleaner than what we had before. And hopefully
leaves us in a better position to migrate to a 'real' solution provided
by libsoup... if that ever actually materialises.

(cherry picked from commit fe826a4271e8860ae83dd2c7f11a4010b7c0d897)