Big update. Should have commit way more.

Extracted out and added a shortest word chain class. Uses breadth first search instead of depth search to find the shortest chain possible.

Also changed the way input are handled using a dedicated WordChainInput class.

Similarly have simplified the way outputs are handled by adding a Path class and associated PathInfo class.

Added lots of tests