Major Overhaul of Travis Build

- Test against python 2.6, 2.7, 3.2, 3.3, and 3.4 on Travis.  All but 3.2 use Anaconda environments.
- Make networkx and matplotlib optional dependencies for testing. Test first without, and then with them.
- Make PIL a required dependency - we could optionally allow one of a number of
  io plugins to be installed and make the tests pass with each
- Make compatible with numpy 1.6 - no `np.pad` and `astype()` takes not arguments.
- Make compatible py2.6: removed dict generators, could not use masked arrays as a Cython buffer in `restoration\unwrap`.
- Add `version_requirements` helpers in `skimage._shared`, with tests
- Bump required version of Cython to 0.19 due to relative imports error (see below)
- imread and pyfits do not support py3.2, so they are not included in that test.


Cython Error that required Cython >= 0.19:

```python
Traceback (most recent call last):
  File "setup.py", line 151, in <module>
    cmdclass={'build_py': build_py},
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/core.py", line 152, in setup
    config = configuration()
  File "setup.py", line 52, in configuration
    config.add_subpackage('skimage')
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/misc_util.py", line 1002, in add_subpackage
    caller_level = 2)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/misc_util.py", line 971, in get_subpackage
    caller_level = caller_level + 1)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/misc_util.py", line 908, in _get_configuration_from_setup_py
    config = setup_module.configuration(*args)
  File "skimage/setup.py", line 16, in configuration
    config.add_subpackage('filter')
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/misc_util.py", line 1002, in add_subpackage
    caller_level = 2)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/misc_util.py", line 971, in get_subpackage
    caller_level = caller_level + 1)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/numpy/distutils/misc_util.py", line 908, in _get_configuration_from_setup_py
    config = setup_module.configuration(*args)
  File "skimage/filter/setup.py", line 18, in configuration
    cython(['rank/generic_cy.pyx'], working_path=base_path)
  File "/home/silvester/workspace/scikit-image/skimage/_build.py", line 41, in cython
    cythonize(pyxfile)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 603, in cythonize
    aliases=aliases)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 546, in create_extension_list
    kwds = deps.distutils_info(file, aliases, base).values
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 457, in distutils_info
    return (self.transitive_merge(filename, self.distutils_info0, DistutilsInfo.merge)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 467, in transitive_merge
    node, extract, merge, seen, {}, self.cimported_files)[0]
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 478, in transitive_merge_helper
    for next in outgoing(node):
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Utils.py", line 29, in wrapper
    res = cache[args] = f(self, *args)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 406, in cimported_files
    pxd_file = self.find_pxd(module, filename)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Utils.py", line 29, in wrapper
    res = cache[args] = f(self, *args)
  File "/home/silvester/anaconda/envs/py26test/lib/python2.6/site-packages/Cython/Build/Dependencies.py", line 388, in find_pxd
    raise NotImplementedError("New relative imports.")
NotImplementedError: New relative imports.
```
Yes. That is preferable. =P This is unacceptable to me, unless you can somehow hack it such that trying to instantiate a class like this one will raise an ImportError or NotImplementedError, rather than some horrible untraceable error, as will happen now. Perhaps writing an:
```python
__init__(self):
    raise ImportError("Graph functions require networkx, which is not installed")
```
for your dummy?