Add feature : Dijkstra with Node and Edge Objects via Protocol

It's a great implementation of dijkstra.

I compare some implementations.
It's easy to read, so good.

but, It just use Dictionaries.
I want to use with core data or other repositories with objects.

So, I added 2 protocols(Node, Edge).
And clone your algorithm with the protocols.

I added 3 test case testDijkstraWithNodes, testShortestPathWithNodes, testShortestPathWithCirculaNodes.
You can easily check equivalent cases via [graph description].

I want to merge this fearture.
Thanks for your efforts.
-----

#test case
* testDijkstraWithNodes - equivalent test case of testDijkstra
* testShortestPathWithNodes - equivalent test case of testShortestPath
* testShortestPathWithCirculaNodes - Dijkstra with a circle nodes.

* DijkstraNode <NSObject, NSCopying> - NSCopying for using a Dictionary Key
* DijkstraEdge <NSObject>

* DijkstraNodeTestImpl.h
* DijkstraEdgeTestImpl.h