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

The reason we have this interface is so that we can have `EntityPatcher`, or rather the functionality `EntityPatcher` provides. The users of DataModel have places where they have something of type `Entity` and need to patch it. In many cases having something of an unknown `Entity` types is bad, but still DM needs to support its current users. This dispatcher + strategy approach allows DM to support this without itself having any patching logic that deals with entities of unknown type.