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 ;) 
Again - this shouldn't be a part of the public API of this module. Either it belongs in `dipy.core.geometry`, or better, refactor to use these lines of code above. Imagine the beginner who discovers that there are several different functions (in different places) with the same name, that do slightly different things. Confusing...