Swappable storage backend

Add `opts.storage` to specify a storage backend. This allow swapping the default disk-backed storage with a memory-backed storage, as requested for peerflix.