Add Distance Matrix support

This PR finishes the work stated by @tyler-sommer in #19. Your code was really good! I would love to get more contributions like yours! :)

I don't change lot of things, just fix some CS add doc & add more tests...

:+1: