course cache service to uses bulk operations

no reason to have a single and bulk differentiation -- now it's just a
param array of ids to get
overhaul of cache services

all use the bulk query/bulk get.  this way you only have to keep up 1
query for each type, and you get flexibility to do batched queries