FluentSQL updates

moving custom cache key to cache() function and removing run(). also allowing optional caching of empty results.