Allow elements to include skeleton config

Copies all templates found in the root of any element into the
default template location.

These templates will be filled in from heat metadata by
os-config-applier whenever it is run.

Update keystone to install templates in this way as an example.

Change-Id: I0be0a79a431e9ba5b80e84f130c48d5ce8b100ae
Co-Authored-By: Tim Miller <tim.miller.0@gmail.com>
Integrate os-refresh-config with heat-cfntools

* Provide entry point for Heat Metadata to drive os-refresh-config
* Use os-config-applier for configuring heat cfn tools

Change-Id: Ie38b932173948f1e7c414c48caa1b037916bef84
local-config element adds authorized_key for root:

Currently, the local-config and stackuser elements
are intertwined.  local-config installs an authorized_key
for stackuser, if the stackuser element is in use.

This change does two things:
- add authorized_key for root from local-config element,
    regardeless of whether stackuser element is in use.
- install key for stack user from stackuser element,
    only if local-config element is in use.

Change-Id: I0d07b61404119ea0650c5c0fb98d6786adcf3ca9
Merge "Integrate os-refresh-config with heat-cfntools"
Improvements to glance element:

- Perform config installation with os-config-applier
- Known-working config files
- Perform service restarts using os-refresh-config hooks
- Collapse g-api and g-reg into a single element, at least for now

Change-Id: Ie40c9725cbc27445e10ffde8eeff422bd121d5b5
Seperate install of services and start scripts:

This allows openstack services to be git/pip installed
without installing any startup scripts.

This is useful for keystone-db or nova-db elements, for
example, where the service must be installed to perform
database migration, but no service start scripts need
be installed.

Additionally, add a tool to create openstack sql databases.

Change-Id: I72751d4da59f8597d20aea2f27a9dfabe2f63a8f
Update keystone element to use os-refresh-config.

Change-Id: I15595d80ee7fad04d964aaa83a403d9303f6aa55
Add a nova-baremetal element.

Change-Id: I4b439485c32402fa98e45dfea976538e43b770ad
Add a quantum element.

Change-Id: I9de3d85e800c9ea9accafffc92e1cfcafa5c3fdd
Add a horizon element.

Change-Id: Ie585a7ea63ba5b5b8b064df738e9616827e913fa
Add a nova-virt element.

Change-Id: I2e5cbfdfd0da930050ec86d6ee536910bebc64c9
TO PROPOSE: Add a bootstrap element.

Change-Id: Ic300e39a56f401be4d88feb6cdf85c851982282c
TO PROPOSE: Touch a first-boot.status file:

After running first-boots scripts, both to indicate
that the scripts have completed, and also to record
the exit status.

This is useful for automated testing:
  - tests can wait until first-boot scripts have
    completed before commencing testing
  - tests can abort further testing if first-boot
    scripts have failed.

Change-Id: Idec63de858c15def8c621056232aad45eab225e8
DO NOT MERGE: tim element

Change-Id: I2d8927a391306b21cac0a913153dbd3fc3c4ace4
DO NOT MERGE: bin/boot-elements

Change-Id: I0d4e61d0f00a8635ad27c37eb96d226269f27ab3