Changes for initial push with tests

This is the foundation of the backup script for Yelp's Bower Postgres backup.  The script currently verifies packages in the package directory and has templates for syncing remote and local files.  No postgres functionality has currently been implemented.  Currently code in main shows functionality of functions.
class Package(namedtuple('Package', ['name', 'url'])):
    # ...

is the more-correct way to do this

The reason is you always want the names to match otherwise you get into debugging hell:
```python
>>> class Foo(collections.namedtuple('Bar', ['herp'])): pass
>>> Foo('derp')
Bar(herp='derp')
```