Reimplementation of NSInvocation, minus floating-point support, for educational purposes