Use singleton pattern for static registered tests.
The original fails with nvcc+msvc - there's a static order of initialization issue leading to registered tests being cleared. The test then fails on
VERIFY(EigenTest::all().size()>0);
since EigenTest no longer contains any tests. The singleton pattern
fixes this.