Add AWS ElastiCache module

This is an Ansible module for creating, destroying and otherwise maintaining  Amazon Elasticache cache clusters on AWS.

It's pretty straightforward, idempotent where needed, and mostly feature complete. There are a few "advanced" features (e.g. managing cache parameter groups) that I did not tackle for lack of time (and lack of personal use case). These could easily be added later.

This module supports:

* Creating a new cache cluster or ensuring one is present.
* Deleting an existing cache cluster or removing one if need be.
* Modifying a cache cluster.
* "Hard modifying" a cache cluster. Most cache cluster attributes cannot be altered after the cluster is created. If the `hard_modify` parameter is true, the module will destroy and recreate a cache cluster if any of these parameters are changed. In other words, this is way to force your cache cluster to match the parameters specificied in the task.
* Rebooting a cache cluster. Could be used as a handler, e.g.
* Waiting around for the action to complete or just proceeding immediately.

Most of the complexity in this module is around managing states. The API is poorly documented with regards to possible states and it took a fair amount of testing to get that all fleshed out.

I'm deploying this now in a project as its own module.

Please feel free to check it out and let me know if there are questions or comments. Otherwise I'm submitting it here for consideration into the core module library.