Do not validate constraints in schema constructor

This patch moves validation of constraints out of the constructor of
schema objects into a separate method that can be invoked on the
schema objects after creation. This gives us more control over when
validation shall be invoked.

This patch fixes an issue with custom constraints that could not be
validated when having a default value, since they require the RPC
context to be present. However, the context was not present in the
places where needed.
The short-sighted fix would have been to change a lot of method
signatures to pass the context properly, but that did not seem to be
really clean. The better fix seemed to be to move validation into
a separate method that can be invoked with the proper context. This
will also give us more control on when we do validation, and which
validation we do.

This patch
Closes-Bug: #1314240

This patch will also enable to fix
Partial-Bug: #1314401

For that bug it will be necessary to switch off validation under
certain conditions, which was not possible before when doing
validation right in the constructor.

Cherry-pick from review https://review.openstack.org/#/c/91485
(cherry picked from commit 19f83e84269e1aec2d299ada616a4648e00f4333)

Conflicts:

        heat/engine/parameters.py
        heat/engine/service.py
        heat/tests/test_hot.py

Change-Id: I19e1fb520551eb42bf36bb380f1cc28c81bbaedd
Merge "Do not validate constraints in schema constructor" into stable/icehouse