Moved store_recursive() into it's own file.

store_recursive() now takes an optional block, which (if present) will
yield before each 'info' object is written to the index_file. With this
change, the store_recursive() method can be reused more easily. For
example, the 'store' method passes in a block that copies each file as
the scan progresses.