MODE-2276 Changed how child node definitions are found when adding a child

The new logic attempts to limit the need to find the number of existing children
with the same name as the proposed child, and it provides reusable components
that will improve efficiency when using a single session to adding lots of
children under the same parent.
MODE-2276 Replaced the old logic to find child node definitions with the new logic

All of the places where the old logic was being used, including in the session's
pre-save (validation), have been replaced with the newer logic added in the previous
commit. I extracted the `SiblingCounter` nested interface (added in the previous
commit) into a separate abstract class with static methods to create commonly-used
implementations. The old logic has been removed.
MODE-2266 Added more performance tests for adding lots of nodes, both in deep and flat hierarchies.
MODE-2276 Improved efficiency of methods to add/remove/check mixins

The methods no longer gets `ChildReferences` when the added/removed mixin has no
have child node definitions. And they also don't look at the properties if the mixin
has no property definitions.
Merge pull request #1198 from rhauch/mode-2276

MODE-2276 Changed how child node definitions are found when adding a child
Merge pull request #1200 from hchiorean/MODE-2266

MODE-2266 Added more performance tests for adding lots of nodes, both in deep and flat hierarchies.
MODE-2272 Java Sequencer Should Be Thread-Safe
The JavaFileSequencer was holding state by a field referencing the source file recorder. I removed that field and now the sequencer creates a new JdtRecorder each time JavaFileSequencer.execute is called. Also removed some constants and a method that was not being used. Test case also added. However, on rare occasions, running the test case in Eclipse still throws the NodeNotFoundInParentExceptiondocumented in the issue.
Test case is now being ignored.