Change the scopes off the types
Such that the data can be accessed readonly. Also removes all the friends as the data can now be accessed.
Also the constructors for the base types are public with eigen as these don't have special properties which could be violated.