Refactored undo framework a bit.   Made it into a singleton instead of static with the intent of eventually injecting it into the undoables.
Added support for generic contract types in Zenject. You can now write _container.BindGeneric(typeof(Test1<>)).ToTransient(); and have dependencies such as Test<int>, Test<Vector3>, etc. automatically filled in.  This was necessary for the undo system.
Made a bunch of zenject changes based on discussion with Neil.
Added zenject unit test