added Query->toArray() and Query->toString()
moved cache methods to Storage base class, caching now does not need to be implemented in Storage subclasses