Create new dialog class, AddDisplayDialog, for adding a display

AddDisplayDialog is a clone of NewObjectDialog.
Add ROS specific accessors to Display objects

Exposing a ROS topic type makes it possible to determine which ROS topics
a Display object is interested in.  Adding a setter for the topic lets a
display be configured without user intervention.  Subclasses of Display
must override these functions for them to have any effect.
Switch to tab interface for creating displays

Displays can be added by display type (same as before) or topic (new).
When adding by topic, displayable topics are listed with compatible
markers as a sublist.  When a display is added this way, its topic is set
to what the user selected.
Let plugins visualize multiple topic types

Plugins now return a set of compatible types which are used to select
topics.  The selected type is now an argument in setROSTopic() so displays
can know how to configure themselves.
Add topic accessors to image display base class

This lets the Camera and Image displays work with the new quick select
interface.
Refactor how data is passed between widgets when adding a display

Have tabs contained by AddDisplayDialog emit SelectionData whenever a new
selection is made.  This is class contains all of the knowledge needed to
select a plugin along with an optional topic and datatype.
AddDisplayDialog now saves the current selection information for each tab
and reloads it when the tab changes.
Add utility functions for grouping similar topics together

getGroupedTopics() is a method for grouping topics that represent the same
data stream and can be visualized using the same plugins.  This is
primarily for plugins like Camera and Image which can view the same data
over subtopics of one base topic (e.g., they can use topics /camera/image,
/camera/image/compressed, or /camera/image/theora which carry the same data).
Change add dialog to use combo boxes for similar topics

In the display dialog, if a set of topics are subsets of one base topic
and are compatible with the same plugins, display the base topic along
with a combo box to select the subtopic.

For example, suppose camera data is being published on /image,
/image/compressed, and /image/theora and those topics are compatible with
the Camera and Image plugins.  Then the display dialog should display
/image as a topic with a combo box containing the entries "raw",
"compressed", and "theora" with the Camera and Image plugins below it.
Previously, each topic would have appeared as a separate entry.
Fix plugins so that they can be deleted without being initialized

Previously, several plugins would segfault if their destructors ran
without their onInitialize() method being called.  To fix this issue, add
a new method Display::initialized() which returns true if onDisplay()
has finished.  Subclasses can use this method to see if they need to
cleanup resources from their onInitialize() method.
Free dynamically allocated displays in AddDisplayDialog
Use DisplayFactory to create plugins in AddDisplayDialog
Speedup construction of image plugins

Refactor ImageDisplayBase to scan for transport plugins and create its
ImageTransport instance in onInitialize() instead of in the constructor.
This lets CameraDisplay and ImageDisplay be constructed much faster.
Speedup construction of depth cloud plugin

Move creation of the image transports and pointcloud_common from the
constructor to onInitialize().
Speedup construction of point cloud plugins + laser plugin

Move creation and enumeration of plugins from PointCloudCommon's
constructor to its onInitialize() method.
Rename Display topic accessors and add documentation

Change "setROSTopic()" to "setTopic()" and "getROSTopicTypes()" to
"getTopicTypes()".  There is no non-ROS message support in rviz, so these
changes result in shorter and still unambiguous method names.
Use a tree with combo boxes for selection by topic

In "Add display by topic dialog" topics are now displayed hierarchically.
If a topic is visualizable (i.e., at least one plugin it says it can use
it) all plugins that can visualize that topic are listed as children.  If
a plugin can view topics that are children of the visualizable topic, they
are displayed as dropdown options in a combo box of the plugin.
Have display map store instances of displays instead of their names

This makes it possible to call instance methods at a later point in time.
Let plugins filter topics based on names
Add DepthCloudDisplay to plugins that are addable by topic

The plugin will only match topics that have "depth" in them.
Remove unused code from add_display_dialog.cpp