Adding update of delegation tokens

This change would enable user to schedule task for updating delegation tokens periodically (e.g. HBase delegation token). Also, Weave internally uses it to update HDFS delegation token.

The change mainly involves adding a `scheduleSecureStoreUpdate` method in `WeaveRunner`, implementation of it in `YarnWeaveRunnerService`, and new interfaces for that purpose. Also there are refactoring to make the update logic in AM and Runnables happened in some common code base.

The update logic is as follow:

1. Scheduled update task is executed based on the schedule.
2. `SecureStoreUpdater` will be invoked for all live applications that are known to the `YarnWeaveRunnerService` (based on states in ZK).
3. For each applications that has an updated store, perform an update on old store (if any, fetched from HDFS) and save it back to HDFS.
4. Send a system message to AM, notifying the secure store has been updated.
5. AM receives the message, load the updated Credentials, and set it to UGI.
6. AM broadcast the update signal to all Runnables under its control.
7. Each Runnable load the updated Credentials, and set it to UGI.