jstree upgrade (Functionality Review Only)

This is a huge PR addressing the update of jstree which had far reaching consequences. Because much of the code needed to be rewritten, I have also fixed a number of other bugs in the webclient at the same time and switched to a fully JSON REST API powered tree. Obviously it would be preferable to have done that in separate PRs, but that would have required coding a lot of broken behaviour from scratch only to then fix it.

As it's such a large PR, I am looking to evaluate the functionality first, fix any obvious problems, and then I will refactor this PR into logical chunks for what will probably be a hefty code/full functionality review.

Testing instructions
--------------------------
Basically just compare existing webclient to this.

There are differences, most of which are upgrades (e.g. child numbers now update when copying/moving objects) or bug fixes (e.g. tree now supports having the same object in multiple places without unpredictable behaviour), but if there are mistakes, it would be good to find them now.

I am aware that webtagging does not work yet, this is because it was relying on webclient internals (unavoidable in current plugins realistically and also unavoidable to break it here) and I have yet to update the public version.