Make the barclamp templates explicitly declare the roles they provide. [1/25]

This pull request updates the barclamp templates to explicitly declare
the roles they provide, updates the role object to track that
information, and refactors how we validate the templates to get rid of
boilerplate validation code.


 attributes.schema                                  |   59 ++++++++++++
 bc-template-crowbar.schema                         |  100 --------------------
 crowbar_framework/app/models/barclamp.rb           |   15 +++
 crowbar_framework/app/models/deployment.rb         |   11 ++-
 crowbar_framework/app/models/node.rb               |   15 +--
 crowbar_framework/app/models/role.rb               |    3 +-
 crowbar_framework/app/models/snapshot.rb           |    4 +-
 .../db/migrate/20120731225476_create_snapshots.rb  |    2 +-
 .../db/migrate/20120731225510_create_roles.rb      |    3 +
 .../test/unit/deployment_model_test.rb             |    2 +-
 crowbar_framework/test/unit/snapshot_model_test.rb |    2 +-
 11 files changed, 95 insertions(+), 121 deletions(-)

Crowbar-Pull-ID: 9bdf40d9e246f0feb72ee603555057fa7d132fd9

Crowbar-Release: development