Adding futures tests

Adding futures for:
* Recursive parallel iterators
* Calling functions that construct the type of the method calling them (e.g., ``file.foo()`` calling ``open``) 
* Calling functions that construct the type of the iterator calling them (e.g., ``file.iter()`` calling ``open``)