Adds a new entity as if it was created and fires the OnNewEntity internally. If NULL is passed in a brand new entity is created and passed back.

This allows for external creation of the entity and then adding the entity to the context after the fact.