Rename archive -> archiver.
Split Archive in to two different parts.

Also rename to Archiver.
Use __traits for the implementation of nameOfFieldAt.
Add ConcreteSerializer as a layer between Serializer and Archiver.

This is to make it possible for ConcreteSerializer to take the archiver type as a template parameter. Serializer is an abstract class now.