AppLink Events

Besides the "revert of revert",  these are newly added:

1. getAppLinkData from Intent.getData as well

2. compatible with protocol to release

3. add unit test

4. provided gradle dependencies the support lib without actually adding it.

5. avoid crash for built Bolts, if using applink without requiring 'support' lib.

add support lib as provided dependencies
Not sure if I got you. LocalBroadcastManager.sendBroadcast is async,  it takes time for receiver to receive. This is registration for the receiver.  lock.countDown is needed after broadcast before assertions in the main thread, which is two lines below.