RF: make setup.py and exts work with Python 3
RF: import reduce for Python 3 compatibility

reduce no longer in builtins for Python 3
RF: disable __init__ error for Python 3
RF: add six module for Python 3 compatibility
RF: refactor pkg_info for Python 3

Loading ConfigParser
RF: remove copies of nibabel functions in utils

dipy depends on nibabel now, so no need for the copies.
RF: remove use of string split for Python 3 compat

Replace string.split with split method of string.
RF: refactor viz subpackage for Python 3

Fix implicit relative import in __init__
Replace use of .next method with next builtin
Replace print statements
RF: Make urlopen compatible with python 3

Import from urllib.request on Python 3, urllib2 for Python 2
RF: make compatibility function for pickle loads

Pickle loads has to load pickles saved in Python 2.  Also, the import
has changed between the versions.
RF: use six to import cPickle for Python 3

cPickle moved into pickle in Python 3; use six to import it for both.
RF: named imports required in Python 3

Cannot do ``from .module import *`` in Python 3.
RF: basestring to string_types for Python 3

basestring gone, use six.string_types instead.
RF: use text file for writing bvecs

We were using a binary file (default for NamedTemporaryFile).  Python3
forces us to be explicit.
RF: remove uses of has_key and iteritems

For Python 3 dict compatibility
RF: use func.__name__ instead of func.func_name

__name__ present in Python 2.6
RF: remove unused StringIO import

Helps with Python 3 compatibility as well.
RF: import xrange from six for Python 3

xrange in Python 2 becomes range in Python 3.  Import xrange from six
module for compatibility.
RF: removed unused nibabel import
RF: use numpy assert_almost_equal not nose version

nose version causes errors comparing arrays because arrays no longer
have a __round__ method, causing an error in the standard testing
library.