Move Future to use a Condition

Also, implement `Condition#wait(timeout)` support. 

@tarcieri, it is a little hacky, but works!