Clean up entity patching code

TL;DR: split patching code from Entity and did the same with its tests

Done:

* split patching code from Entity and derivatives
* drop usage of deprecated term related methods defined by Entity
* split Fingerprint patching code into its own class
* split Statement patching code into its own class
* split SiteLink patching code into its own class
* drop usage of deprecated claim related methods defined by Entity
* drop usage of deprecated Item methods
* fully replicate the old tests and then remove them from EntityTest and derivatives

This code actually needs an array. Also, even if this can perhaps be further improved, I do not want to add to this commit. This code is already simpler than it was before, when it was located in `Item`