Upgraded jstree

Hotkeys is now built into jstree so remove that plugin

jstree + Everything else

Added appropriate HTTP Response Codes to REST API

Changed default paging and no-arguments for tree.py functions

Functions will now return as much data as possible by default, it is
then filtered by some or all of the other options.

Added capability to customize the page size on REST API views
and tree.py

Small tidyup remocing comments and whitespace changes

Removed leftover old '-locked' check
Some whitespace and comment changes also

Whitespace and comments

Fixed extra parameter in marshalling plate acquisitions

Expand node on selection by default

Added select on up/down keys in jstree

Changed expand-on-open jstree to use click not select

This is to allow keypress navigation without opening everything

Also, enable double click on a jstree image to open the full-viewer

Load, but not open nodes on select with key navigation as that is
what the current client does

Restore selection intelligently upon refresh

Added child count indicator and ensure it is updated when its number of
children change

Correctly update the child count of containers within the tree
when changing one of their identical brethren

Fix re-load on selection change on already loaded jstree nodes

Fix slight issue with duplicate node child count on insertion in jstree

Added conditional selection to jstree to prevent selection of different
types simultaneously

Comment on group-dropdown behaviour

Remove group-user drowndown enhancements from branch

Improvements to public share/discussion interface

REST API now offers the capability to return all shares/discussions,
optionally filter by those that a user is a member of and/or the owner
of.

Webclient updated to use new API interface

Webclient public interface now responds correctly to dblclick

Webclient public interface now correctly updates the right panel

Webclient public interface now correctly handles the case where a shared
image has been deleted

Remove old functions

Added 400 Bad Request to handling of ajax errors

Also added a 400 for ValidationException for the containers api to test with initially

Added more exception handling to REST API

Fixed double-loading when expand-on-select in jstree

Fix rename of P/D/I updates jsTree node name

jsTree up/down hotkeys deselect_all() then select_node()

Handle left & right jsTree hotkeys

Slight readability improvement to hotkeys

Handle renaming with identical nodes in jstree

Added comment on renaming nodes in jstree on change

Disallowed selection of multiple of the same item simultaneously in
the jstree

Handle all the possible exceptions in REST API and return appropriate HTTP Response Codes

Minor PEP8 corrections

Fix area select

Handled filtering the centre panel results

Correctly update the jstree toolbar when updating the tree selection in
response to filtering or icon selection

Updated webclient area selection to only update dom and jstree once
instead of once per icon selected

Fix bug in REST API view where group context was not being taken into account
when listing tagged objects

Added DELETE list of tags capability to the REST API

Fix toolbar and deleting tags in webclient Tags panel

Comment and minor fix

Fixed buttons toggle on tags panel when selecting in middle panel in
webclient
Disabled multiple selection of the same object
Enabled load on select, open in click and double click open for images

Remove 'annotation' button config from webclient as it doens't seem to exist

Fix share/discussion REST API that was returning duplicate rows in some
cases

Integration tests for marshalling of shares/discussions

Added crosslinked object checks to tree tests

Correctly disable paste button after emptying paste buffer

Updated jstree to latest standard release (3.0.8)

Add missing locate functionality when nodes are created

Reinstated 5.0 cut behaviour

Context menu 5.0 cut behaviour

Very nearly completed reworking of thumbnail update + conventional cut
support.

Committing for safety reasons

Fixed numerous issues with updating thumbs/tree on
copy/cut/move/delete/dnd including some to do with updating other
identical nodes and/or child counts

Fixed missing plugin in tags/public
Fixed missing data on copied nodes
PEP8 fixes
flake8 fixes
Further PEP8 changes
Further PEP8 changes
Further PEP8 changes
Fix broken unit test for tree.py
Fix broken tree test generation
Removed perms test which is not for inclusion here
Fixed missing fixture in show tests
Handle broken image links in public shares correctly as before #3124

Also remove old hotkeys import
Resolve merge conflict to restore new public share functionality
Removed some debugging trace
Fixed Add To Basket button
Fixed removing images from shares

Also some reformatting of public.html
Fix test name clash in test_show
Remove unused import for test_tree
Remove some unused code and comments
Make "ldap" column required.

This commit makes the column "not null" and updates all
the places where an experimenter was created explicitly with
the proper field initialization.
merge develop -Dnone -Ibreaking -Eexclude -Sno-error: PR 3119 (Remove the "dn" column from "password" (fix #2587).)
merge develop -Dnone -Ibreaking -Eexclude -Sno-error: PR 3141 (jstree upgrade (Functionality Review Only))