Ensure that tests pass or skip with minimal dependencies

This does the following:

* Introduces ``requires_xxxx`` decorators that can be used to indicate that a specific dependency is required for the test to pass
* Adds this decorator to all tests to ensure that tests pass with only numpy, pandas, matplotlib, and pyqt/pyside
* Adds a command-line option ``--no-optional-skip`` that forces all tests to be run (useful for Travis, but we don't want all users seeing failures by default for functionality they don't need)
* Adds a configuration to Travis to tests the minimal configuration