Streamline-based Linear Registration

Hi all,

This is the first PR for the new crème de la crème method that I presented in ISMRM. 
http://scil.dinf.usherbrooke.ca/wp-content/papers/garyfallidis_etal_ismrm14.pdf

In accordance with @omarocegueda's work you first define a StreamlineDistanceMetric then give this to StreamlineLinearRegistration which has a method called optimize which takes the two bundles (sets of streamlines) as input and returns a StreamlineRegistrationMap which can transform the moving bundle to the static.

I have only one simple tutorial (see bundle_registration.py) for now but I am working with @jchoude to put some streamline datasets online and create a couple more detailed tutorials both for bundle-based, full brain streamline-based registration and bundle-specific atlas creation. But that will come in another PR (probably multiple PRs) most likely after the release.

In all files the coverage should be high. But in optimize.py the coverage cannot be that high because
some of the tests require different versions of scipy therefore those will not run in your machine
if you don't have those scipy versions. 

Also, when you build the modules a new config.pxi file will be created in dipy/build. We use this file to check
if your compiler supports OpenMP or not. See dipy/align/bundlemin.pyx to understand how this enables
us to enable/disable functions and imports at compilation time. 

@arokem can you prioritize looking at this PR for this release? I will start working on the LiFE PR.

Enjoy your new toy ;) 
Gotcha. So that's the reason. I wouldn't necessarily put it this way, though. 

Rather, I'd say something like: 
   
    This is a faster implementation of ``bundle_min_distance``, which requires that all the points of each streamline are allocated into an ndarray (of shape N*M by 3, with N the number of points per streamline and M the number of streamlines). This can be done by calling `dipy.tracking.streamlines.unlist_streamlines`.