Support for using other keys for "show" functionality

This pull request adds support for using other keys for "show" functionality
by extending the "path" and "show" query string to encompass not only
identifier matching but also key-value matching.  The parsing of the
query string variables is also now done by regex.  Example URLs utilising
this new functionality follow:

* `/webclient/?show=project.id-1`
* `/webclient/?show=project.name-foo`
* `/webclient/?show=tag.textValue-bar`
* `/webclient/?path=plate.name-barcode|well.name-A1`
* `/webclient/?path=plate.name-barcode|well-1`
* `/webclient/?path=run-1|well-A1`

Existing URLs should be maintained for single objects both in the new
and legacy styles:

* `/webclient/?show=project-1`
* `/webclient/?path=project-1`
* `/webclient/?path=project=1`

Functionality of this form is extremely useful when creating and sharing
URLs from external applications where OMERO unique identifiers are not
known or where specific tags are to have URLs created for them.

The only non-standard key that has been added is `well.name`. This key
will accept values of the semi-standardised `A1` or `1A` form and with the
Python internals (assuming a Plate key has been specified as well) look
up the correct Well. This key is only supported when using the `path`
query string variable.

Ways in which Well matching work have also been overhauled in the
browser (there is no longer any location regex'ing) and have been made
much more robust where PlateAcquisitions cannot be looked up.

Tests have been added to cover the regex semantics and the new
functionality.

There has also been one slight modification to the gateway which has
been done in a single commit with associated test cases (88e6fe994d3876e2cfd7eb0ca5fa289b075dd9e9).