Issue title: Merge setupForInstructionSelection code generator passes
 Issue body: The function 
https://github.com/eclipse/omr/blob/792db037e60dda3e21a9aa66772223c2b1b87d16/compiler/codegen/OMRCodeGenerator.cpp#L469
performs two walks over the trees to prepare the nodes for instruction selection.  The justification in the comments is that the `_register` and `_label` fields on a node are unioned and therefore (somehow) a single pass causes interference between them.  However, those fields have not been unioned for quite some time (long before this code was contributed to open source) and therefore the passes are independent.  These two passes over the trees should be combined into one.

The work here is two-fold:
1.  Double check my claim that these passes are independent by investigating the use of those fields, and any other possible interference.  If so, merge the two passes into one.
2.  Use a `TreeTopIterator` in place of manual treetop iteration.


 Comments: 
 Comment 0: I will try this one if you don't mind :) 
 Comment 1: 1. Only `_register` is used in union `UnionA`, no `_label` is present. There is `_useDefIndex` in the union, but it's not used in the passes at `setUpForInstructionSelection`.
Label is present in the UnionBase (stored as `Node *` [here](https://github.com/eclipse/omr/blob/792db037e60dda3e21a9aa66772223c2b1b87d16/compiler/il/OMRNode.hpp#L1731)), but it's a separate union, so it does not cause interference.

2. Coming

Let me know if you want more details.
 Comment 2: As of (2), is there any way to obtain more details (or debug) why tests fail? I have changed [this line](https://github.com/eclipse/omr/blob/792db037e60dda3e21a9aa66772223c2b1b87d16/compiler/codegen/OMRCodeGenerator.cpp#L486) to: 

```cpp
for (TR38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5TreeTopIterator it(self()->comp()->getStartTree(), self()->comp()); 
     it.currentNode(); 
     it.stepForward())
```

Testing with Travis config shows that many tests fail due to segfault, but even running with ctest options as `--output-on-failure` or super-verbose `--VV` do not provide much specific info on segfaults.
 Comment 3: If that's the only line you changed then the seg fault is almost certainly from the very next line (`TR38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Node * node = tt->getNode();`) because `tt` is still `NULL` as it is no longer initialized in this loop.
 Comment 4: I changed a few other lines, so after for-loop initialization, it looks like:

```cpp
TR38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5Node * node = it.currentNode();

self()->prepareNodeForInstructionSelection(node);
```

`it.currentNode()` should return some node, which is then passed to `prepareNodeForInstructionSelection`
{'source': 'GithubIssues', 'repo_name_with_owner': 'eclipse/omr', 'issue_id': 415613910, 'repo_stars': 957.0}