Add Table::findOrNew()

This method lets you easily find an existing entity or generate a new entity with the chosen properties. In addition to finding entities, it lets you patch/set additional attributes on the found/created entity.

I decided to call the method `findOrNew()` as I wanted it to have consistency with `newEntity()` and I was concerned that `findOrCreate()` might imply that the entity would be saved.

Refs #4631
would it make sense to allow the callback to abort the save? ala

    if ($callback && $callback($entity) === false) {
        return $entity; (or return false..?)
    }

Overriding, or not using this method to prevent persisting might be a relatively-common need in app-land code; If the code calling findOrCreate is going to further modify the record before save, it doesn't need to be persisted by this method.