Precodereview

Also made significant changes to other code:

*I think a very successful refactoring of methods into `ToDo` class, usage feels much more natural now. ToDo is now dataset agnostic, and all the internals of default assignment, and key creation are handled within the ToDo class.
*`ToDo.from_entity()` relies on the explicit reassignment of `__class__` variable of entities which are ToDos. No safety checks are done here, however they would be possible. Jury (i.e. stackoverflow) is out as to whether this is good python style, but the majority seem to think it is ok, several big libraries use it.