Fix for issue #610 - Ignore internal and nested types

This change exludes internal and nested types from being treated as
controllers. This is consistent with MVC5's behavior.

DefaultActionSelectionConventions was primarily tested through running
action selection. I wanted to also test the methods with substantial logic
in this class, so I moved a spate of a classes from private classes inside of the
integration tests to public classes so they could be shared. I also added
tests to fill gaps in DefaultActionSelectionConventions, which is the vast
vast majority of this change.
I'm not entirely sure having these as top level public types is a good idea. It's quite likely we'd end up modifying these controllers to account for new tests. The risk is that there's no telling if these changes somehow change the behavior of old tests in ways that cause the test to pass, but does not cover the code path that was originally intended to be tested. Having them localized to individual test classes avoids that risk.