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

Right. This makes it quite plain that all I did was move code and clean it up.