New two-step-macro

This two-step-macro is intended to be used to prevent retain cycles to `self` when using blocks, while simultaneously preventing the deallocation of a weak reference to `self` during that block's execution.

For example:
```
EEEPrepareBlockSelf();

self.stronglyRetainedBlock = ^{
    EEEUseBlockSelf(); // declares and assigns a local variable called `blockSelf`
    [blockSelf callMethodWithoutFearOfDeallocation];
}