MAGN-4539 Create select faces node.

http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-4539

- Refactor selection nodes to inherit from two base classes.
- Refactor UI code out of selection node into a xaml control that is used in SetupCustomUI.
- Add a Select Faces node which allows selection of multiple faces in Revit using the PickObjects API.
- Adds a method to do sub-element selection, ex. Divided Surface Families.
- Add an UpdateDelegate to selection nodes for Revit. The update delegate is called whenever the "target object" is modified in Revit. For example, previously when you select a Divided Surface using SelectDividedSurfaceFamilies, the node found all family instances attached to the divided surface. If you changed the UV divisions of the Divided surface, the collection of families would not update because the logic for finding the family instances was inside the method for doing the selection. The UpdateDelegate also has an out parameter which conveys the selectionTarget back to the calling method. The selection target, in the case of something like SelectDividedSurfaceFamilies would be the divided surface. A reference to this element is required for future calls to update the divided surfaces.
- Add tests for all selection nodes except select point on face and uv on face as those are not properly serialized during saving.

Merges Required after pull:
-  [ ] Revit2015

@steel PTAL.