Fixes template not using the JSON or YAML format

An internal unexpected exception is raised while validating a template
which only has string content. We should handle the case and raise the
correct error message such as "invalid format" and to tell the template is
not using the JSON or YAML format.

And modify incorrect version name and version date in this patch.
And change "template" from global variale to class varialbe in
test_api_cfn_v1.py. (missed in another patch which this patch
depends on: Change Idc2ba2b9 by misoperation)

Change-Id: I46ee8c48e3ddae71be061cfda0c029d86d132684
Closes-Bug: #1267379
Refactor Parameters Schema based on common Schema

This patch is last in a series of patches to unify the code for
property and parameter validation based on a common Schema class.

The current patch refactors the implementation of the Parameters
Schema to be a sub-class of the common Schema class in constraints.py
so that most of the schema validation code can be shared for property
and parameter validation and no two different code paths for mostly
indentical functionality exist.

Change-Id: I4a1dc2e65e7b118347933bdf18aba49c058aa28b
Closes-Bug: #1230229
Implements: blueprint schema-code-consolidation
Add autoscaling notifications

Send 2 notifications when an auto-scaling event occurs :
- successful resizing : 'autoscaling.start' and 'autoscaling.end'
- failed resizing : 'autoscaling.start' and 'autoscaling.error'

Implements blueprint send-notification-autoscaling

In same time, split out all notification code in its own module :
- stack CRUD : heat/engine/notification/stack.py
- autoscaling events : heat/engine/notification/autoscaling.py

Co-Authored-By: Angus Salkeld <angus@salkeld.id.au>
(from https://review.openstack.org/#/c/54661/)

Change-Id: I23e4478faf58ef23b031a3b0d4087c892dc4e96f
Merge "Fixes template not using the JSON or YAML format"
Merge "Add autoscaling notifications"
Merge "Refactor Parameters Schema based on common Schema"
Unscoped List Stacks

This allows non tenant-scoped list of stacks for the management api
blueprint.  A user allowed by the policy stacks:global_index will be
able to make a call to /tenant_id/stacks?global_tenant=true and get all
stacks in Heat, and not just the ones owned by the user, effectively
bypassing tenant scoping.

If the user is not authorized by the policy and they pass the
global_tenant param, the request will get denied by the policy enforcer
and 403 Forbidden is returned.

Implements: blueprint management-api
Change-Id: I973a7ad2726eb6d9c972d08abe15e241aa120ec3