Allow setting hash_key to values other than id
Allow setting hash_key

When creating the dynamo_db_table instance the hash_key defaults to id.
This patch allows assigning a string attribute as the id.
Fix bug with hash_key
Read credentials from AWS_CREDENTIAL_FILE environment variable.
Implements AWS::Core::CredentialProviders::CredentialFileProvider
Fix bug in CredentialFileProvider test.
Merge pull request #302 from bshelton229/env-credential-file

Read credentials from AWS_CREDENTIAL_FILE environment variable
Merge branch 'master' of https://github.com/lrdcasimir/aws-sdk-ruby into lrdcasimir-master
AWS::Record::HashModel.create_table now observes the assignable hash key.

This was previously hard-coded to 'id', it now uses the specified
hash key:

    class Book < AWS::Record::HashModel
      string_attr :isbn, :hash_key => true
    end

    Book.create_table(10, 5) # table hash key becomes 'isbn'
Moved the static #id attribute logic from AWS::Record::AbstractBase into Model.

In order to allow a dynamic hash key, we don't want the extra baggage of
a fixed attribute name.
AWS::Record::HashModel now accepts mutable hash keys.

The default behavior for a class extending `AWS::Record::HashModel` is to
have a managed `#id` attribute.  This attribute is auto-generated before
creation.  It is set to a random UUID.

You can now override this behavior with the `:hash_key` option.  When you do this,
the HashModel's hash key will no longer be managed (no default values).
AWS::Record now accepts default values set via a proc.

By using a Proc, you can ensure every record has a different default value.
For example:

    class Book < AWS::Record::HashModel
      string_attr :isbn, :default_value => lambda { UUIDTools::UUID.random_create }
    end
Moved one other reference for id out of record abstract base.
Fixed an integration test for AWS::Record::HashModel.