Implement a rqt_bag plotting plugin

Implement the rqt_bag plotting plugin based on the plotting code in rqt_plot, to address #85. I've included the downsampling code originally written by @adwilson10, and upgraded it so that it samples across the selected region in the bag file rather than needing it's own limits, and so that it does the downsampling in a separate thread that doesn't block the main UI thread.

This includes a major overhaul of the plotting code in rqt_plot, to make it useful as a general plotting widget for other plugins.

The overhaul also includes updates to the plotting core to support solutions to #235, #234 and #231.

This also includes an update to the rqt_bag plugin API to expose updates to the selected region as a QT signal, and my initial fix for #67.

I've tested this with a large bag file: 1.9GB, with 500k+ messages on a topic.

This depends on #236; merge that PR first.