Rework tracking

This (along with another pull request to come soon) replaces https://github.com/nipy/dipy/pull/69

I've take the shm stuff out of this pull request because I need to update it to use the GradientTable class, but also I think it'll be easier to treat these as two separate pull requests.

I really want to make this better so let me know how we can do that.