Support transactional mode that does not require generated subclasses and calculates changes on commit
Currently, JOPA tracks changes during transaction and propagates them to a transactional snapshot in the OntoDriver. This requires a way to be notified of changes to managed entities. This was done by AspectJ aspects prior to 2.0.0-SNAPSHOT, and currently is done via ByteButty-generated subclasses of entities. However, this causes issues for applications that rely on entities being direct instances of the entity classes (e.g., when the entity classes are used as Map keys). Since, for example, RDF4J driver does not use the transactional changes to enhance any repository access anyway, it makes sense to introduce a mode where transactional changes would be calculated on commit and immediately propagated to the underlying repository, without the in-transaction intermediate. This is how JPA implementations work. On the other hand, we want to retain support for tracking changes during transaction, e.g., for reasoner usage in the OWLAPI/Jena driver. Therefore, JOPA should support two modes of operation - the current transaction changes tracking mode using ByteButty subclasses, and a new JPA-like mode where changes are calculated on commit and entity classes are used directly, without generated subclasses.