Basic support for loading catalog with custom coordinator and storage backend

- added `coordinator_for_url` and `storage_for_url` helper methods to find the right storage class for a give url. These can probably be improved.
- renamed `validate_url` to `valid_url`
- added url validate to StorageBackends
- integrated custom config loading with `catalog:list` command

`.zinc` looks like this:

```
[vars]
aws_key = "blah"
aws_secret = "blahgggg"

[storage.dev]
url = "s3://zinc-demo"
aws_key = "vars.aws_key"
aws_secret = "vars.aws_secret"

[coordinator.dev]
url	= "redis://localhost:6379"
redis_password = "blah"

[bookmark.demo1]
catalog_id = "com.mindsnacks.demo1"
storage = "dev"
coordinator = "dev"

```

The meat of it is in this commit: https://github.com/mindsnacks/Zinc/commit/9aab84b0371ee2e85e4b7f263e8a24cf4eed7fa0

The rest is just code formatting.

---

Example usage with using `.zinc` and bookmarks:

```
$ zinc catalog:list -c demo1
test1 [2=(master)]
sphalerites [1, 2, 3, 4=(master)]
cats [1=(master)]
dogs [1=(master), 2=(test)]


$ zinc bundle:list -c demo1 -b cats -v 1
kucing.jpeg
lime-cat.jpeg
```