Made Promise::associate 'discard' in both directions.

Say you have a process defined as follows:

class FooProcess : public Process<FooProcess>
{
public:
  Future<bool> func() { return future; }
private:
  Future<bool> future;
};

Then you call dispatch that returns a future:

Future<bool> f = dispatch(process, &FooProcess::func);

If the user discards the future 'f', we expect the 'future' field in
FooProcess also being discarded. However, this is not the case
currently.

This patch fixed this issue.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15319
Refactored Owned and added a function Owned::share().

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15731
Renamed Shared::upgrade() to Shared::own().

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15739
Removed Owned from stout.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15837
Updated references in libprocess to use the new Owned.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15838
Updated references in Mesos to use the new Owned.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15839
Rewrote ZooKeeper watcher initialization using process::Once.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15850
Added 'Set' wrapper in addition to union and intersect operators.

Review: https://reviews.apache.org/r/15882
Added stout 'Set' tests to libprocess/3rdparty Makefile.

Review: https://reviews.apache.org/r/15883
Added 'Some'.

Review: https://reviews.apache.org/r/15884
Added stout 'Some' tests to libprocess/3rdparty Makefile.

Review: https://reviews.apache.org/r/15885
Replaced 'Option<T>::some(...)' with 'Some(...)'.

Review: https://reviews.apache.org/r/15886
Added 'Failure' as a helper for a failed Future.

Review: https://reviews.apache.org/r/15887
Used 'Failure' instead of Future<T>::failed.

Review: https://reviews.apache.org/r/15888