Introduce semaphores for tiered storage.

This commit wraps the tiered storage access componnets in semaphores,
since we can handle several concurrent memory reads.
Merge pull request #279 from prometheus/refactor/storage-semaphore

Cleanups in tiered storage and apply semaphores.