Split CArchive and IArchivable to seperate headers

By splitting out IArchivable from Archive.h a lot of dependency can be removed. Inspired by how ISerialize is split out from Variant.h.

Touching utils/Archive.h now only triggers a rebuild of 10 files. Before there where hundreds.