common/generic_iterator.hpp: add common interface for iterator

Generic interface for an iterator whose operations may return
error codes.

Signed-off-by: Samuel Just <sam.just@inktank.com>
common/map_cacher.hpp: add abstraction for managing a persistent map

In particular, handles caching unstable keys during async write.

Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd: add SnapMapper

Signed-off-by: Samuel Just <sam.just@inktank.com>