Basic simpledb-based catalog coordinator

Some inspiration was taken from: https://github.com/pLucky-Inc/sdb_lock


# How it works:

## Acquiring a lock

When a lock is acquired it writes two key/value pairs under a SimpleDB item named with the catalog id. `lock_token` uniquely identifies the lock holder. `lock_time` is the timestamp in seconds since the epoch in GMT from when the lock was acquired.

```
`com.mindsnacks.stuff: {
    'lock_token': 1231231,
    'lock_time: 123123123211.2.
  }
```

To acquire a lock, it attempts to put new `lock_token` and `lock_time` keys *with the expectation that `lock_token` is unset*. This is done atomically using SimpleDB's expected value supported: http://aws.amazon.com/articles/3572?_encoding=UTF8&jiveRedirect=1

If it if the lock is not acquired successfully, it retries every second for a number of seconds specified by the supplied timeout.

## Releasing the lock

When the critical section completes, it attempts to delete the `lock_token` and `lock_time` keys *with the expectation that the `lock_token` in SimpleDB matches the local token*. Again, this is done atomically with SimpleDB's consistency enhancements. 

## Expiration

SimpleDB does not have any built-in way to expire locks, therefor the client must do this itself. Catalog locks in Zinc are currently intended to be short lived, so any lock that has not been released for a long time is likely to be expired. 

Before acquiring a lock, it first checks for expiration if the existing `lock_time` is beyond the expiration time, the lock is cleared, and then it will attempt to acquire the lock the normal way.

This is definitely the most dangerous part, but I couldn't think of another solution.

--



Here's what a `.zinc` looks like

```
[vars]
	aws_key = "key"
	aws_secret = "secret"

[storage.dev]
	url = "s3://zinc-demo"
	aws_key = "vars.aws_key"
	aws_secret = "vars.aws_secret"

[coordinator.dev]
	url = "sdb://us-east-1"
	aws_key = "vars.aws_key"
	aws_secret = "vars.aws_secret"

[bookmark.demo1]
	catalog_id = "com.mindsnacks.demo1"
	storage = "dev"
	coordinator = "dev"
```