remove unused UI data tree stuff
don't modify the jstree library, use options
cleanup
Add ability to duplicate a question (Case:48046)

Adds the option to duplicate a question, either maintaining the original itext
id values ("link itext"), or setting all questions in the duplicate to auto
itext id, thereby creating new itext nodes for everything ("copy itext").

Question IDs are renamed according to a foo -> foo-1, foo-2... pattern.

When you duplicate an entire tree of questions, all logic expressions in the
duplicate are updated so any relative references to questions within the tree
refer to the appropriate question in the duplicate, and any references to
questions outside the tree maintain their original reference.

There are only two things this doesn't do that I would want it to:

1. Linking of Itext such that when you edit the display text of one question,
any other questions using the same itext immediately have their name in the
tree updated (and more importantly, their display text input value).  This
actually works correctly if you save the form and refresh the page, but that's
not very useful.  I can probably figure this out.

2. Insert duplicate question after source question instead of at the end of
source question's parent's tree.  Originally had it working this way, but ended
up abandoning that due to a lot of difficulty with certain edge cases due to
the way we handle relative insert position.
always propagate linked itext changes (Case:48474)
add ability to unlink questions with linked itext (incomplete)
remove duplicate link itext option, rename duplicate to copy
insert duplicate question immediately after source question, not at the bottom (Case:48583)
Fix data node issues with duplicate question (Case:48589)

There were many issues adding data nodes and it seemed like new ones popped up
when I solved other ones.

For instance, after I had perfectly working code that added the duplicate
question after instead of at the end, I couldn't add data nodes at all, leading
to the discovery that in our use of the jstree types plugin, we weren't
specifying datanode as a valid child of the root node, and we had somehow been
hacking around that to put nodes in the UI tree.

1. I had known before that we had two different points of truth for what types
could be children of what other types, but when I had it shoved in my face like
this and realized that it lost me a significant amount of time, I decided to
refactor the code and remove the redundant checkMoveOp() function and redundant
handler code.

I also wanted to do this so it would be easy to solve the issue of trying to
add a data node while a leaf node is selected and the issue of adding a
question while a select item is selected (Case:37184) solvable in a generic,
readable way in only one place in the code.

2. The setCurrentlySelectedMugType() and getCurrentlySelectedMugType() methods
of formdesigner.controller were used to maintain a local copy of the UI's state
and had to be called whenever you did jstree.select_node or
jstree.deselect_all, which I did extensively when duplicating a question, and I
found this to be extremely confusing and error-prone, so I changed those to
mutate and inspect the actual UI's state and removed redundant calls to those
functions.

Most anything else is just the minimal refactoring necessary to make other
things not break with the above changes, mainly 1.
fix delete issues (Case:48807)
fix language switching issues (Case:48817)
fix issue with changing the display language after duplicating a node
Restore some old behavior

Before trying to insert at higher levels, always try inserting after.
fix reloading of UI from XML (Case:48886)
(Case:48913) Display default select item (item42) instead of [no text]
Update node name when you change data node id (Case:48914)
don't add questions in data node range (Case:48916)
merge master
restore ability to toggle nodes and other stuff (Case:48917)
make copying a data node copy bind [/ not throw an error] (Case:48915)