Add proxy_result as a type of callback

This commit adds proxy_result as a type of callback. The new method is
like an around_method callback but instead of passing the origin method
as a block it gives the result of itself instead. When the origin method
is redefined it is setup to allow a block to be passed in that will also
be passed into the block given to the definition of the proxy_result.
While it is possible to pass a block into the origin method it is also
optional. proxy_result definitions can also be chained where the result
of the previous chain is passing into the next one. proxy_result
callbacks will occur after around callbacks but before after callbacks.