Extend the importMIF test method

 * No longer necessary to pass the series count
 * Extra keyword arguments are used as fake args
Initial test to create pre-FS data

In order to test migrating archived files to
filesets, we need a way to generate archived
files without requiring a 4.4 database.
Add uploadFileset method

In order to permit uploading a fileset without actually
importing anything a new method has been added,
`uploadFileset` which functions just like `importFileset`
but returns a null Handle.
Move getManagedRepository to client.py
Better exception handling of versionInfo

Previously a null version info passed by the
user would cause an exception. This change
makes that more lenient.
clients.py: provide write_stream helper
Use importFileset for synthetic data

The uploadFileset method does not provide a way
to access the newly created fileset ID. Instead,
this uses importFileset but puts an unimportable
image at the front of the fileset (e.g. `README.txt`).

This may be a sufficient method that uploadFileset
can be completely removed.
Working re-attachment (Pixels remaining)

The testConvertSynthetic2 method now:

 * creates a MIF via fake import
 * copies that image to a synthetic image
 * deletes the original MIF
 * copies the attached files to a fileset
 * deletes the original attached files

This leaves a re-attached image that functions
normally, though it does still have a Pixels
file which needs deleting.
Rename BEC.groupPermissions for clarity
Remove new ManagedRepositoryI.uploadFileset method

Injecting a blank file at the start of the fileset
is the currently working method of creating a fake
fileset. The uploadFileset method was never enough
due to the missing Handle return value.
Refactor post-process check to allowUpdateOrDelete

Previously, only on post-process was handling the case
of grpPermissions being null or DUMMY. This now puts
that logic into the more general allowUpdateOrDelete
method. Callers should only need to have an IObject
and a Details object which they trust to not have
come from the user.

This is needed for testing whether or not actions like
delete can be performed for files on disk which belong
to a DB object.
ImageBinariesRequest command with deletePixels

Since no public method exposes a way to delete files
under /OMERO/Pixels, this commit adds an omero.cmd
implementation which can handle much of the backend
IO work needed. allowUpdateOrDelete from ACLVoter is
used to decided whether or not files on disk can be
deleted.
Fix AbstractGraphTest compilation
Implement pyramid delete
Remove unneeded command options

Since deleting both attached files and thumbnails can be
handled via the regular API, these have been removed from
`ImageBinariesRequest` to streamline inclusion.
Fix NullHandleException on slice2html
Refactor ManageImageBinaries (was ImageBinariesRequest)

 * Pixels are no longer deleted but are toggled to `_bak`
 * "archived" is used rather than "attached"
Test cleanup after refactoring
Add null check to requireFileset
Add --extended option to 'fs archived'