Added a WeakFuture<T>.

Using a WeakFuture<T> fixes memory leaks in Future::then and
Promise::associate.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/16197
Made all relative dates relative to poll time.

When Angular tries to resolve a filter, it runs it twice to see if the
value changes. Without passing a reference date to `relativeDate`, the
function instantiates a new `Date` to use as the reference. In the
surprisingly frequent case when rendering occurs on the edge of a minute,
dozens of `relativeDate` calls will return two different values if the
filter is resolved before- and after the minute edge.

For example:

    Render starts at 12:13:59.999
    $digest calls relativeDate, returns "1 minute ago"
    $digest calls relativeDate 1ms later, returns "2 minutes ago"
    Angular throws, "Error: 10 $digest() iterations reached. Aborting!"

By passing the pollTime to all relative dates, the dates are all
relative to the same moment in time, and $digest always resolves
properly.

Note: Because page rendering is unfortunately painfully slow on some
pages when there is lots of data, this case happens frequently.

Review: http://reviews.apache.org/r/16185
Fixed a bug in the task status accounting.

Review: https://reviews.apache.org/r/16188
Fixed the flaky AllocatorTest.RoleTest.
Fixed the zookeeper client wrappers to use the negotiated
session timeout value as their local reconnect timeout.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16111