Improved Abstraction in Datastore classes

(+) Superclass Datastore
(/=) Make all data stores a subclass of Datastore to avoid code
duplication (getResults, default constructor)
(+) Factor out CategoryDatastore from CaseDatastore
(/=) make all query strings static final to make the initialization
work properly and also the strings should be shared between instances.