- Open and close files on demand. This avoids a problem we have a large
  argument list ( > 1024) and hit limits like EMFILE. Since we only do I/O
  to the file once this makes sense.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
- move filerec code into it's own files
- fix up filerec code so that filerecs are dynamically allocated and
  inserted into a global list.
- clean up a ton of code by allowing hash-tree and results-tree to directly
  reference filerec objects.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
- remove filerec if we get an error during checksumming instead of quitting
  the program.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
- improve handling of out of memory situations.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
- fix a bug where we weren't closing file descriptors.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
- add code to walk directories

Signed-off-by: Mark Fasheh <mfasheh@suse.de>
- Limit the total number of dedupe requests we send on a per ioctl basis.

Signed-off-by: Mark Fasheh <mfasheh@suse.de>