Performance improvement

Use DynamicMethod to create a Func<T> which is the equivalent of return
new T(); which is faster than using Activator.CreateInstance()
Closes #275