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
Lots of duplication here, how about a helper function?

``` python
def make_skipper(module, label=None, version=None):
    label = label or module
    try:
        mod = __import__(module)
        if version:
            assert LooseVersion(mod.__version__) >= LooseVersion(version)
        installed = True
    except ImportError:
        installed = False
    return pytest.mark.skipif(str(not installed), reason='Requires %s' % label)

requires_astropy = make_skipper('astropy', label='Astropy')
requires_astropy_ge_03 = make_skipper('astropy', label='Astropy >= 0.3', version='0.3')
etc
```