updated futures implementation to be fully nonblocking, and split Trampoline and Future out into separate files