Get returns the instance of S which must have been previously registered using Register.
If this is the first time Get is called for type S, the suite's Setup method will be ran.
If the suite's Setup method failed, t.Fatal will be called.
Register allows a suite of type s to be later retrieved using Get.
Only one instance of type s should be registered - multiple calls to Register
using the same type will cause a panic.
Teardown runs the Teardown method on registered suites who ran their Setup methods.
If a suite was registered but never retrieved (by using the Get function), it's
teardown method will not be run.
A Suite holds some shared state for multiple tests.
The state should be instantiated during the Setup method
and (if neccessary) cleaned up during the Teardown method.