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 
We have this event ``building-command-table`` interchangeably used in both the clidriver and with custom commands. However, we have no way of differentiating between both, other than custom commands use the event ``building-command-table.custom...``. Sure, I could parse the name of the event, but I cannot reliably get the name of the service out of the event (i.e. s3api). Really the only reliable way was to obtain the actual service object, which has that info. And I need the service name because that is need to make the clients, which make the waiters happen.