add some monad-container class

add `Lazy` and `LazyExtensions`. these classes are extensions of
which System.Lazy<T> can use as MonadContainer.

add `Future` and `FutureExtensions`. these classes are implemention of
`Future (Promise)`.
Merge branch 'master' into experimental
Merge branch 'master' into experimental