RobotLink: allow subclassing and optionally show as tree

Expands the list of link properties to optionally show the list as a tree of
links and/or joints.  The Style property allows user to choose style.  Default
is same as before (list of links in alphabetic order).

Add setLinkFactory() which allows a subclass of RobotLink and RobotJoint to be used.

Make friendlier to subclassing by changing some members from private to protected.
RobotLink: add "expand all joints/links" button (BoolProperty)

Makes it easier to expand/collapse the whole tree of links.
RobotLink: cleanup

correct style name
remove unused member
remove unused code
RobotJoint: clicking joint hides/shows all descendant links
RobotJoint: fix joint origin transform
Robot: add "Hide details" to link tree
RobotLink: turn off "expand all" when rebuilding tree

This is more intuitive.
Robot: add comment about how to subclass RobotLink
RobotLink: changes to aid subclassing

Make some functions virtual.
Add some accessor functions.
Make const methods const.
Robot: add "enable all links" button (BoolProperty)

Allows all links to be turned on/off in one click.  Useful if you just want to
see one link (turn off all, then turn on the one you want to see).
Robot: force changedLinkTreeStyle() at load.

Required when a new robot is loaded but the style has not changed.
Also add some comments.
RobotJoint: remove unused code
RobotJoint: remove unused includes
RobotLink: add icons to RobotLink and RobotJoint properties
Robot: turn off "Links All Enabled" when a link is turned off

This is consistent with what TF does with "All Enabled"
Robot: rename hide_details to show_details
Robot: reduce the number of Link Tree style options

Just
	- Links in Alphabetic Order
	- Joints in Alphabetic Order
	- Tree of links
	- Tree of links and joints
RobotLink: treat links with no geometry specially

- Hide checkbox (always enabled).
- Hide alpha property.
- Grey out icon.
- Indicate there is no geometry in the property description.
RobotJoint: remove checkbox from joints with no decendent geometry.
Robot: make links children of joints in joint/link tree