Using projection for the tree view data
Pass back maps for Permissions in HQL projections (Fix #9107)

@cneves ran into an issue where he needed the accessors
on Permissions (canAnnotate, etc.) from a projection.
Rather than returning permissions.perm1, a single long
value that gives none of the canX context, you can now
return the permissions object itself which is transformed
into a map of the form:
```
{
    'canAnnotate': True,
    'canLink': True,
    'canEdit': True,
    `canDelete': True,
    'perm': 'rw----',
}
```
webclient.tree parsing permissions using the new permissions projection support (see #9701)
Initial integration tests
Test for marshal_datasets
Fix import
Refactor PlateAcquisition marshaling and add unit tests
Integration test for marshal_plates_for_screens
Refactor to use omero.sys.ParametersI
Test for marshal_plates
unit test for parse_permissions_css
Refactor Dataset marshaling and add unit tests
Fix flake8 errors
Refactor Plate marshaling
Plate marshaling unit tests
Refactor to use omero.sys.ParametersI
Adding tests for no ids passed to webclient.tree helper functions
Add unable to retrieve solo Plate failing test
Ensure we can load Plates without PlateAcquisitions
Another unable to retrieve solo Plate failing test