add generic create method.

this accepts the type of archive and returns the proper instance or
throws an error.