Added pure Python implementation

I think this is fine to release as beta. We may want to refactor the code a bit going forward, but I think it is in a usable state as is.