asset file rework

This reworks the asset file to be a little more generic and
expandable.  Now it just takes a path and md5 value and provides
readers for them since they "travel together".

In addition, it has a class method for creating given an absolute
file path.  This interface reads the file and computes the md5
fingerprint.  It also stores the path relative the the
`config.files_path` setting.  The digest command has been updated
to use this interface.