Competitive Algorithms for Block-Aware Caching