Removed future's destructor

It was only there to prevent Future from being copyable, but it's
noncopyable anyways since it contains a ~fn.
Modernize extra::future API
Add Future::spawn_with
Clean up unused imports
auto merge of #9285 : sfackler/rust/future, r=alexcrichton

The `Drop` implementation was used to prevent `Future` from being implicitly copyable. Since `~fn`s are no longer copyable, this is no longer needed. I added a cfail test to make sure that this is actually the case.

I method-ized all of the `Future` creation methods and added a new one, `spawn_with`, which is similar to `task::spawn_with`.

I also got rid of some unused imports in tests.