Add a new implementation of futures from scratch
Add `promise::set(attempt<T>&&)`
Add utility functions to make future objects
Add `then()`, `next()` and `finally()` to `future` class
Make `shared_state` thread-safe
Fix `map()` in `attempt` class

By allowing maps to void, which was unsupported.
Fix `next()` and `then()` in `future` class for `void`
Integrate new future implementation in the rest of the code
Merge branch 'future_refactor'