Add Collection name parameter to ensureIndex[es] methods

I mentioned this in a comment on Issue #500. Basically the AdvancedDatastore has methods for querying and inserting/updating records with a custom collection name as the first parameter. The ensureIndex and ensureIndexes methods do not have such a variant. This adds that.

Implementation-wise, the 3 methods at the lowest level (`process...Annotations` and `ensureIndexes`) now take an extra DBCollection parameter, and their callers will  pass in either the collection derived from the collectionName, or the one derived from the class.