Fix for #1448 - ViewComponents must be public top-level classes

ViewComponents and Controllers now follow the same rules exactly for what
types of classes they can be.

Also corrected a bug in a test for controllers. Closed-generic types can
be controllers, the test was wrong.
nit: would prefer this be in a separate file.  one file for all test classes but, because the namespace is separate too, in a separate file