Mux tests and applications

This change adds the functionality to build all combinations of
applications and tests in an automated way.  Test methods must now
take an argument of type Application in order to know which
application they will be dealing with.  From there, all test code
should be portable through the Application and TestOperations
abstractions.  In addition an @ExcludeApplications annotation is
available to ensure that certain tests do not run against a particular
type of application.  Use of this annotation should be rare and only
used in tests where the functionality being tested isn't applicable to
all Application types.
Merge branch 'mux-tests-to-applications'