Add generic XUnit test engine class

This will be used by Next but also useful for other things.