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.
You should use `None` for the `types` and `topics` argument defaults and then do something like this:

```python
self.types = types or {}
self.topics = topics or {}
```

See: http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument