[Reviewer: Ellie] Homestead cache changes for Registration-Termination-Request function

This branch does the following:

* Enhances PutIMSSubscription and DeletePublicIDs to also take some private IDs as arguments, creating or deleting the association between them and the public IDs
* Enhances GetIMSSubscription to also return a list of associated private IDs
* Adds a DeleteIMPIMapping cache class to delete a whole row from the IMPI mapping table
* Adds a DissociateImplicitRegistrationSetFromImpi cache class to break an association between an implicit registration set and an IMPI, without necessarily deleting either
* Adds a GetAssociatedPrimaryPublicIDs cache class, to retrieve all the primary public IDs registered with a given IMPI

I've had to make a couple of associated structural changes - in particular, enhancing our support for batching up Thrift requests into a single batch_mutate call (and associated test matcher code). I've also had to move the methods that get columns from Cassandra from GetRequest into Request, as I need to both read and delete columns in DissociateImplicitRegistrationSetFromImpi.