WIP - Axiom types refactor

This branch will include a refactoring of axiom to use axiom-types.

It is a WIP, and fails a lot of tests, has some new undocumented methods but the goal is to get the specs to pass first.