Expose waiters in the CLI

Add a ``wait`` command to all services that have waiters. For each type of
waiter, a subcommand representing that waiter was added. For example, to wait
for an ec2 instance to reach the running state, the wait command would be
specified as ``aws ec2 wait instance-running``.

With the CLI being in a weird transition state, there are some areas that I would like to improve on, but I believe changes to both the client interface and switching the clidriver over to clients need to be made first. I will point out these areas in the code. Let me know if you have any suggestions. Feedback on the places I point out would be very much welcomed.

cc @jamesls @danielgtaylor 
This is based on the assumption that the commands that have even more commands, are custom commands. All custom commands have the subcommand_table property. However, if we were stringing together ``ServiceCommand`` and ``ServiceOperation`` objects we will not be able to use this property because they have no such property (not even under a different name).