Add C# implementation

Hi,

This change adds a .NET implementation in C#. As with the C++ implementation this code tries to adhere to the original ruby implementation as close as possible.

There is one noteworthy difference: there are no heap/priority queue implementations that ship with the .NET framework so a regular List container is used instead of implementing a Heap, after each removal the List is sorted with the Sort instance method. This sort implements the Quicksort algorithm so worst case could be O(n^2) which is bad compared to regular O(n log n) operations on heaps.

Any feedback is appreciated.

Thanks!