Add CheckedPath.child(String name)

Similar to the parent() method on CheckedPath, child allows us to
pass a CheckedPath instance into a method and then work our way down
the hiearchy without the need to pass around the repository instance
which created the path object.

Note: this has the same problem as parent() that `new CheckedPath`
is being called internally. This likely will need to be moved to
a factory object (incl. the repository instance itself)
Recursive delete API

This commit replaces the repository delete method
with a single, recursive i.e. directory-aware one.
A treeList method is also added for recursively
querying the repository. The implementation of the
treeList method is complete here as a prereq for
implementing delete.
Refactoring of cmd/ice helpers

In order to perform some calls as the user, various
helper methods are required in the shared servants.
Here: the PublicRepositoryI.

These methods should likely be further refactored into
either a base servant class or into a helper object that
can be injected.
Working recursive deletePaths()

Implementation uses treeList internally to create
a list of files and directories for delete. This
does not yet handle the non-delete of directories
via omero.cmd.Delete directly (i.e. one test is
still failing).
Compile- and run-time test fixes

This commit fixes the obvious compile errors introduced
by removing the delete* methods from RepositoryPrx, but
also re-implements a dummy method and fixes mock tests.

A few more NYI (not-yet-implemented) strings remain.
Add further tests to 'test-fs' target
Update all repository.py tests for user template

The user template addition in Mark's branch causes nearly all
repository.py tests to fail due to mismatches. These have now
been corrected, though some tests are still failing for other
reasons.
Fix reporawfilestore.py test

This test is now also a subclass of AbstractRepoTest
and no longer tries to access the repository directly.

Clarification of the logic of rfs.size()
when the file does not exist was also necessary.
Fix unit tests to match new repository and DAO behaviors.

Conflicts:
	components/blitz/test/ome/services/blitz/test/utests/ManagedRepositoryITest.java
Re-disabling DeleteServiceFilesTest for the moment
Minor fix to the user template lookup

This makes sure that an exception gets thrown if a directory
has been moved out of the user group and therefore keeps tests
like ImportLibraryTest much happier
Improvements from Mark's review
OMERO5.0DEV__1: Add trigger to prevent Directory deletion

The trigger is run before deletions on the originalfile table
and raises an exception if there are still files which would
count as being "contained" in the directory (based on path
inclusion). The recursive delete method will order deletes
such that any contents should be removed first.
More minor suggestions from Mark
Adding python test for ".." deletes

Appropriately fails with a ValidationException:
"Path contains illegal components"
Fix '%' string issue in OMERO5.0DEV

This fails with:
```
$ omero db script
Please enter omero.db.version [OMERO5.0DEV]:
Please enter omero.db.patch [1]:
Please enter password for OMERO root user:
Please re-enter password for OMERO root user:
Saving to /Users/mark/src/openmicroscopy/OMERO5.0DEV__1.sql
Error printing text
Failed to map line:                     RAISE EXCEPTION '%',
'Directory('||OLD.id||''||OLD.path||OLD.name||'/ is not empty!';')'
```
since the whole script is run through a Python  The functions
were appropriate for pasting directly into psql, but not for
`bin/omero db script`.
Place all template directories in user group (Fix #10458)

In order for the same user to be able to access all of the
date-based template directories from multiple groups, they
must be placed in the user group (id=1).
Merge pull request #774 from joshmoore/recursive-delete

Recursive delete and test cleanup