Use a _FutureListener separate from the _Future to hold listeners.

This separates the concerns, and makes _Future a three-field class.
Holding on to a future gets cheaper.

R=sgjesse@google.com

Review URL: https://codereview.chromium.org//637893002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@41006 260f80e4-7a28-3924-810f-c04153c831b5