Respect schema data type in constraint validation

This patch makes Constraint objects aware of the data type of the
owning Schema object so constraint validation can apply potential
type casts based on the data type.
This is especially useful and necessary for an AllowedValues
constraint and numeric values, where items may be defined as
strings or numbers and cause comparison issues with user values
at runtime.

Change-Id: Id1884b4968993fc9356e7ba4ad03dced4cd00d4e
Closes-Bug: #1321540
Use a dict for clients memoization

This is in preperation for the client being contributed by a plugin
rather than inline.

Change-Id: I191f848ccb97e1cc975ea702016b5637eab0c976
Revert "Load resources using Resource.load_all_from_stack()"

This reverts commit 570e69b7ab0ee16f29d66ab4157a582912ec6017.

We are seeing issues with missing heat data obtained from
the Heat CFN API in TripleO.

Change-Id: Ideea039e51ae7fb3350ee1f35706adce8847de64
Closes-bug: #1331720
Merge "Respect schema data type in constraint validation"
Merge "Use a dict for clients memoization"
WIP

Change-Id: I801b4b46e1b9a872a02695176f6b7ab6b9a5f19d