ros_bag 508

Reworked bag.py to provide various methods for getting info about the bag as a programmatic object rather than in string or yaml format.
Please extract the `sorted(set(..))` calls outside of the condition - since it is performed in both branches.