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
- [x] This branch contains random ideas that need to be pruned.
- [x] Deal with `OverrideAttribute`
- [x] `TaskProxy` class passes tests but needs refactoring.
- [ ] Public fields don't work with `RealProxy`?
- [ ] Can't inspect task properties at runtime?
- [ ] Cleanup commits