Fix #134: Introducing DI

I've introduced Ninject into the project with some of the Ninject.Extensions.Conventions to automatically bind the right things. 

This means things like the Factory.cs can be removed (as well as some other unused files).

The ISortAlgorithm caused a bit of a problem because the two implementations needed to be bound to the two parameters on the SessionSorter so I bound each one specifically.