rollback register/auth changes

try to extend XMPP rather than to modify it

purpose:
add this functions while keeping the old ones work:
1. authenticate user with phone number/email
2. register with phone number/email

We will implement them in these two new modules
  cyrsasl_scram_aft
  mod_register_aft
bring back testing
implement aft register
allow users to login with phone or email

It extends the client-first-message to specify identity type
(https://tools.ietf.org/html/rfc5802#section-5).
The extension attribute is "t". It's available values are:
1: for phone
2: for email
other value will be omitted.
Notes: it's not clear whether extension attributes should be included in client-first-message-bare.
Our implementation won't include the extension attributes

Implementation notes:
1. just the scram mechanism supports phone/email login
2. just the odbc auth_method supports phone/email login

Other mechanisms/methods won't be used, they are planed to be removed
remove users gracefully

It fixes the issue that the server does not responses with an IQ result.
Here is the original reponse:
<stream:error><conflict
xmlns='urn:ietf:params:xml:ns:xmpp-streams'/><text xml:lang='en'
xmlns='urn:ietf:params:xml:ns:xmpp-streams'>User
removed</text></stream:error>
test login with phone and email
remove unused files/functions
fix scram format password issue
just allow SCRAM-SHA-1 mechanism

These mechanisms are removed:
PLAIN
DIGEST-MD5
SASL-ANON

And the password is stored as SCRAM
(won't allow to store it as plain any more)
just allow odbc auth_method

The other auth_method are removed:
 anonymous
 external
 http
 internal
 ldap
remove unicode characters in vars config
ignore ct generated file
make it easy to work with IntelliJ IDEA

1. add external tools
2. use ejabberd_tests that supports rebar
3. generate odbc_redis configuration for release
change the configuration of travis ci

1. include pull request id or branch name in the tarball name
2. use erlang 17.1
parallelize the tests using Travis CI's build matrix
fix an error in retrieving sql result
fix the bug that chars are not converted to lower

it will result in carboncopy does not be disabled when a user is removed
and if a new user register with the same user name and bind with the
same resource, the carboncopy will be enabled for this resource.

That's why the ejabberdctl_SUITE fails
when it goes after the carboncopy_SUITE
update tests to avoid the error caused by bosh_SUITE
Merge remote-tracking branch 'origin/master' into privatemode