-Defines a SmartFuture class that is part of the parallelization
-framework. A SmartFuture is a kind of Future (i.e. a representation
-of the result of asynchronous processing that may know its value or
-not depending on whether the asynchronous operation has completed).
-Whereas normal Python Futures must be waited on or resolved manually,
-a SmartFuture automatically waits for its result to be known as soon
-as it is utilized in an expression that demands its value.
-
-Also contains some utilility code for waiting for one/many futures.
-