Various tests for thumbnails (See #10618)
Whitespace fixes for test_thumbnailPerms.py
Cleaning testThumbs
Test ImageWrapper.getThumbnail (See #10618)

This gatewaytest goes through various combinations
of the uses of getThumbnail(). They are all currently
passing which points to 10618 actually being an API
usage issue.
Final cleanup of test_thumbnailPerm.py

All methods (barring the one expected fail) are now
passing. As with the gatewaytest, the assumption is
that for the thumbnail service to work correctly, a
proper group context must be passed.
Add tests to also check non-omero.group (See #11427)
Add assertion to getThumbnail

On develop, the direct=False, size=96 methods are failing for
security reasons:

```
ome.conditions.InternalException: Fatal error retrieving thumbnail metadata
```
Set direct=True on missing metadata (See #10618)

Rather than throw an InternalException, ThumbnailCtx
now throws a NoThumbnail (caught) exception. Either
this is turned into a ValidationException or another
method is used to synthesize a Thumbnail (at the cost
of more overhead)
Refactor into handleNoThumbnail for read-only issues (Fix #10618)

After the last fix, 2 tests were still failing when root tried to
access thumbnails. Now all 24 tests are passing.
Use `Exception(String)` ctor for NoThumbnail
Fix whitespace in ome/services/Thumbnail*
Fix copyright in ThumbnailCtx
Merge remote-tracking branch 'origin/develop' into rebased/develop/10618-priv-thumbs

Conflicts:
	components/tools/OmeroPy/test/integration/test_thumbnailPerms.py
Fix #11384: add missing break statements.
Remove commented out and unused code.
Add "Scale Proportionally" checkbox.

This enables the user to scale the ROI proportionally.
It is a checkbox element in the Measurement Tool that, when
activated, will change width and height in unison.
Clean up imports and refactor code.
Remove autounboxing - use primitives.
Use short-circuit operator in "if" statement.
Add javadoc.