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

I cannot see why we need this class. Per below we shouldn't have an `EntityPatcherStrategy` interface and then we also won't need and cannot have an `EntityPatcher`.