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.
I am not sure if it is a good idea to compute derived values in the API. Anyone can trivially do this in user land based on `end` and `start`.