Switch from Castle DynamicProxy to RealProxy

This removes the Castle dependency (`RealProxy` is part of .NET). While experimenting with running tasks in parallel, the `DynamicProxy` object would occasionally throw an exception related to some non-thread safe problem that I was not able to track down. 

`RealProxy` works, but it does require the base to inherit from `MarshalByRefObject` which I'm not super excited about.

Tasks
- [ ] This branch contains random ideas that need to be pruned.