Exception handling in SchemaDEntityOps

The `Option` methods in `SchemaDEntityOps` are trapping all exceptions and turning them into `None` rather than just `EntityKeyNotFoundException`.

These commits fix that, and refactor the direct and indirect methods on `DEntity`