Factor out calculation of traversal cost into its own class

David, Andrew --

Also add some testing of the turn cost calculations.

Consider this pull request a request for comment. I'd like to hear what you have to say about this change. It's a little awkward to have the cost model live inside the IntersectionVertex because it's a little too deep inside the routing code to inject a singleton into (also it gets serialized/deserialized as part of the graph).

Please let me know how you think I could do this better/differently.

Avi