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.
@pranavkm I decided to follow my :heart: 

There were too many integration tests that don't justify the maintenance cost. I deleted them, and there we no more need to share these classes. So now they're in the same file as the tests that use them. 

In the case of `DefaultActionDiscoveryConventionsTests` they are still public top-level classes, because they need to be - but they're in an ugly namespace now.