Display Tag Set if any in tooltip for new tag.
Clean Filter text.
Review publishing menu if multi-selection.
Use countImportedImageFiles for download. Fixes #12136
Throw a better exception during testing
Initial skeleton for tx command
Nearly working integration test
Add _name_wrapper fields to Python objects

In order to accept strings for nearly all fields,
the code-generation layer needs to inform the Python
objects of what type of content they take. (IcePy
knows but it won't tell us!)

So for every field, like `Image._name` there's an
additional field `Image._name_wrapper` which takes
either a string or the value of the correct type.

Collections don't yet properly work.
Working `tx new` command

Simple object creation is now possible on the CLI:
```
bin/omero tx new Screen name=foo
```
Fix unit tests with mox
Implement array lookup (child@=1)

Now a field argument of the form: name@=1
where 1 can be any integer sets looks up
from the previously created objects and
assigns the found value rather than the int
itself.

This required changing the `proxy_string`
lookup method on omero.model `__init__` to
one in which the id itself can be a string
in which case it gets parsed if it contains
a ":". For example, "1" is simply parsed to
`rlong()`, but "Image:1" is treated as a
proxy string.
Override close to prevent call to __die__
Add nullable information to property info
Add _info_list for properties for validation

Now before an attempt is made to save an object,
the provided arguments are checked against the
overall property list. If any items are left unset,
then rather than attempt the upload, an error is
printed:

```
required arguments: name, ...
```
Support AnnotationLink creation via proxy_to_instance

Since it isn't possible to know at code-generation time
what type is going to be passed, we needed a helper method
(`omero.proxy_to_instance`) which is the default for all
abstract classes.
Refactor new field metadata for readability

At the suggestion of @knaber, @will-moore, and
@ximenesuk, I've updated the metadta model here
to be more readable/usable:

 * Each class has a signle `_field_info` namedtuple
 * each element of which is *another* namedtuple
 * with the elements `wrapper` and `nullable`.

i.e. `image._field_info.name.nullable` is `False`
Variable assignment of created objects
Fix exception messages
Refactor variable addition into TxCmd object

A couple of things happened here:

 * TxCmd was introduced to represent a whole line
 * TxState is now use as `self.ctx.get("tx.state")`
Change output format to be scriptable

@chris-allan suggested a better output format to make
bash scripting a possibility. Now only the proxy_string
format is print for each row, e.g. "Project:1"