Class Scope.

A scope allows parts of the code to change global state (such as the current log) during execution, and restore it afterwards. Objects of this class should be declared as automatic variables so that the destructor is called when execution leaves the lexical scope.

Note that the root scope must be declared with an explicit log, or the first logging statement will fail.

In order to keep track of scopes, there are some rules: If Scope a is created before Scope b, b must be deleted before a. Really deleted, Allocator::free() will not free them.