Performance improvement

This branch uses less AOP and only runs the Arrange and Act parts once per context, instead of once per test. It is already being used in production successfully.