This implementation uses Reflection.Emit to generate proxies for
duck-typing of event data on net45 and dnxcore50.
For now, the code that does a 'splat' of the top-level event data is still
using reflection instead of code-generation. The next update will address
this and add more test coverage for this part of the code.