Check resources are in expected states

Allow resource to check whether it is in an expected state and update
status and action accordingly.

This adds a check action to the stack that will perform checks in all
their resources and nested resources as well.  If a resource doesn't
have a handle_check() method, check for that resource will just pass.

If any resource at the end of a Stack.check() doesn't have a
handle_check() method, then a message will be added to the status_reason
of both the resource and the stack saying that CHECK is not (fully)
supported.  This allows for the other resources to implement their own
checks for their expected states.

Co-Authored-By: Richard Lee <rblee88@gmail.com>
Implements: blueprint stack-check (partial)
Change-Id: I18985476696faeaa47149c233a067f9494c2effa
Merge "Check resources are in expected states"