snap,many: mv Open to snapfile pkg to support add'l options to Container methods (#8729)
We want to eventually expand Container to take an options struct to Install()
for example, which means that the squashfs and snapdir implementations need to
import "snap" pkg to understand that option struct, but this would lead to an
import cycle since the "snap" pkg also imports squashfs and snapdir packages
directly.
The solution is to make "snap" pkg not import the squashfs and snapdir packages
and instead have Open and the formats listing live in another package so that
the formats will always get loaded by just using Open() directly. The new
snapfile package is where Open lives and it imports "snap", the squashfs
and snapdir packages without import cycles.
This requires numerous changes across the codebase to use snapfile.Open now.