fix issue with local update buckets

RecordTypesCache assumed that the next trigger it gets for an update can be assumed if there was a local update (= an update performed through this client). This is not always true however, I think because not every trigger on ZK will lead to a watcher event, therefore added a check on the record type version. The same problem exists in the field types cache but is harder to fix because field types don't have a version.

This problem was detected in the context of the upcoming refreshSubtypes feature: the remote client updates one record type, leading to the server updating several record types, and then the client checks if the expected updates to these other types had happened. However, even with sleeping, the types did not get updated in the remote cache due to the problem fixed here.
Add refreshSubtypes functionality

refreshSubtypes is a flag which can be passed to the updateRecordTypes method. If true, then when updating a supertype record type, its subtypes will be automatically updated to point to this new version of the supertype (pointers are always to specific versions of supertypes). This is a convenience feature, because otherwise it is kind of hard for the user to move all these versioned pointers.

In core API, builder API, avro. REST itf still todo.

Also used consistent casing for subtypes (not subTypes, following wikipedia).