Add ability to force futures

Similar to Scala's

```scala
Await.result(awaitable: Awaitable[T], atMost: Duration)
```

However, I think it is more useful to make this available as a method on the future directly (similar to Java Future's get() method)

If you're wondering where the name `force` comes from: `force` is used rather than `wait` in most PL theory and is the name of the Haskell function for forcing (awaiting) futures.