Added should-not-reach-here test.
Moved private symbol to namespace "detail".
Fixed a bug with wsd::Promise<T> when T is a reference type.
Put the private section after public section.
Fixed typo.
Use a shared pointer instead of scoped pointer to store the resovled
value, which enables the sharing of resolved values between chained
futures and improve performance.