Allow extending the Rpc class

I am extending the Rpc class and in order to do so without reimplementing logic I marked some members in RabbitBus and Rpc classes with virtual. Also I extracted a some code into protected methods. 

It looks like a lot of changes when you look at the diff on github, but if you can pull it up in a side-by-side diff, hopefully you can see that I really just extracted lines from Rpc.Request into a new protected method RegisterErrorHandling and then did the same in Rpc.Respond, into ExecuteResponder.