Initial implementation and spec tests.

You could just use 2.1.0 and run the whole thing through travis with different ruby versions to ensure compatibility.