Reimplement Site.undelete and Page.undelete

* Reimplement Site.undelete and Page.undelete
* Make Page.markDeletedRevision raise ValueError if an invalid timestamp
  is passed, fix marking
* Add tests in page_tests.py (requires sysop)
* Rename summary param for delete/undelete to reason

Site.deletedrevs needs to be updated to listdeletedrevisions for 1.25wmf.

Change-Id: I1eb2c158f6450bf7b4e9c3f26c83bb7674b9f766
Bug: T74733
Merge "Reimplement Site.undelete and Page.undelete"