Use a random generated string as id instead of an incremented integer

This pull request is to address issue #6.

This change requires the table `keys` in the MySQL database to contain a new entry called `token`. The `token` entry needs to be a `TEXT` or `VARCHAR` with a big enough length to prevent the token from being truncated.

This version has backwards compatibility for those giveaways without an id.