Added a new scope header to deal with scope exit

This Pull Request introduces new scoping utilities.

Note that Scope::Exit is the equivalent of today's ML::Call_Guard except that it does not use std::function and rely on lambdas and template argument deduction.

D's lover will love it.