Fix a stack overflow within -[OCMBoxedReturnValueProvider handleInvocation:]
Fix a stack overflow within -[OCMBoxedReturnValueProvider handleInvocation:]

The code was using the method signature's return type to determine how large a stack buffer should be used for retrieving the
overridden return value. This was problematic as the overridden return value may not be of the same type as the method
signature's return type. It may be an unrelated type, in the case where `-handleInvocation:` would go on to throw an
exception, or it may be a related type of a different size. This comes up when dealing with methods of a `BOOL` return
type but overriding the return value to an integer literal (`0`/`1`) or C11 boolean constant (`true`/`false`) which are
of type `int` and so require more than a single byte to store.

To address this we now use a size derived from the overridden return value's Objective-C type encoding to determine how
large a buffer is required.

Lightricks/ocmock,erikdoe/ocmock,Lightricks/ocmock,Lightricks/ocmock,erikdoe/ocmock,erikdoe/ocmock,Lightricks/ocmock,erikdoe/ocmock