Create new base class for OWLObjectImpl that does not cache entities and
anonymous entries.
Create alternative inheritance structures for axioms that do and do not
need to cache entities and named individuals
Add abstract methods for adding entities and anonymous individuals to
sets
Plain literals don't need two hashcode fields
When the data factory is asked to construct a DisjointClassAxiom given
only a single class expression,
assume that the original form of the expression had two identical
arguments.

This should have the semantics of making the class equivalent to
Nothing.

We a second class expression to the set:
If the class expression is not owl:Thing, make it disjoint with
owl:Thing.

 If the classExpression is owl:Thing, add owl:Nothing;  this lets the
axiom have two arguments, and is semantically void;   we could make
owl:Thing disjoint with not(owl:Nothing), but I'm just going for
syntactic viability in this case.   There are many other ways for expert
users to make an ontology inconsistent.

  All changes are annotated (with an annotated annotation), noting the
change, and noting the version of the API and the time when the change
was made.  rdfs:comment is used as the annotation property to avoid
declaration issues (making the change at the data factory level means we
don't have access to the ontology).
warnings removed
In MapPointer trimToSize, also trim the map.
Call trimToSize on freshly loaded ontology if supported.