Refactor OCAInvoker initialization, fix retaining

Retain arguments early and bridge them when replacing. Plus some minor refactoring.
Fix OCAInvoker retaining the target

Major refactoring of Invocation mechanism. Invoker must be initialized using living Catcher, because we have to keep argument live. NSInvocation failed to work property in this matter and therefore it is forbidden to -retainArguments using NSInvcoation. It is not currently possible to use Invoker without Catcher. Catcher continues to work fine with renamed macro. This implementation does not suffer from memory leaks or zombie objects.

Additionaly, Invocation manipulation was extracted to separate method and test is passing.