Add rake tasks for migration of proposal data bags / roles

There are two new tasks:

  - crowbar:schema_migrate -- this migrates data bags / roles to the
    current revision of the schema
  - crowbar:schema_migrate_prod -- this is a convenience wrapper task to
    call crowbar:schema_migrate with the production environment

By default, this will migrate data bags / roles for all barclamps. It's
possible to restrict this to one or several barclamps:
 rake crowbar:schema_migrate_prod[nova]
 rake crowbar:schema_migrate_prod[keystone nova]

The migration works the following way:

  - it supports upgrades and downgrades.

  - schemas supporting migration must have a schema-revision int
    attribute in the deployment part; the template will contain the
    version of the schema revision in this attribute.
    (Reason this is in the deployment part: this will be available in
    the committed role too)

  - there are migration scripts in
    /opt/dell/chef/data_bags/crowbar/migrate/$barclamp/. The scripts
    must be named $rev_$somedescription.rb; the filename can have
    0 (001_foobar.rb will work as well as 1_foobar.rb). There can be
    multiple scripts per revision; they will be executed by alphabetical
    order (or reverse alphabetical order in case of downgrades).

  - a script can provide two functions (they are optional):
      - an upgrade function
      - a downgrade function
    The functions must take as parameters:
      - the barclamp attributes of the template
      - the barclamp deployment information of the template
      - the barclamp attributes of the proposal / role
      - the barclamp deployment information of the proposal / role
    The functions must return:
      - the updated barclamp attributes of the proposal / role
      - the updated barclamp deployment information of the proposal /
        role

We are explicitly restricting acces to the barclamp attributes and
barclamp deployment information to forbid the migration scripts to
change anything outside of the perimeter of each barclamp.

As an example, for nova, we could have
/opt/dell/chef/data_bags/crowbar/migrate/nova/001_add_vuntz_attribute.rb
with the following content:

def upgrade ta, td, a, d
  a['vuntz'] = ta['vuntz']
  return a, d
end

def downgrade ta, td, a, d
  a.delete('vuntz')
  return a, d
end

This will update the attributes.nova.vuntz attribute in the proposal
data bag, and the default_attributes.nova.vuntz attribute in the role.
Fix constraints based on attributes

If we pass the constraint, we should not return true: there's more code
to execute!
Only show "Reinstall" button for allocated nodes

For unallocated nodes, it makes no sense.
Do not crash when viewing a node at the beginning of its discovery

The number_of_drives method was raising an exception if the node was not
fully discovered yet.
Merge pull request #10 from crowbar/release/pebbles/master

Release/pebbles/master
Update service_object.rb

Removing "-i" option from sudo command in order to get rid of "stdin: is not tty" warning (this warning is harmless but messing up parsing of xml file with tempest run results)
Update service_object.rb

Minor typos fixed
In case default_os is not defined yet, initialize it with the right value.
When selecting a target platform, remove any roles that are not suported
on the target platform.
Fix destroy_active again to not use role name as instance name

The original fix was in c4acddcb, but it got broken by f7f9c1a4.
Merge pull request #613 from vuntz/data-bags-migration

https://github.com/crowbar/barclamp-crowbar/pull/613

Merged by devtool for cloudsleuth
Merge pull request #638 from vuntz/fix-attributes-constraints

https://github.com/crowbar/barclamp-crowbar/pull/638

Merged by devtool for cloudsleuth
Merge pull request #641 from vuntz/reinstall-for-allocated

https://github.com/crowbar/barclamp-crowbar/pull/641

Merged by devtool for cloudsleuth
Merge pull request #642 from vuntz/avoid-early-crash

https://github.com/crowbar/barclamp-crowbar/pull/642

Merged by devtool for cloudsleuth
Merge pull request #649 from rhafer/fix/destroy_active

https://github.com/crowbar/barclamp-crowbar/pull/649

Merged by devtool for cloudsleuth
Do not fail if disk information is not available (for windows nodes)
Merge pull request #645 from MirantisDellCrowbar/BUG/DCB-159/release/pebbles/master

Bug/dcb 159/release/pebbles/master
Merge remote-tracking branch 'crowbar/release/pebbles/master' into release/pebbles/master
Fixed spacing in locales definition file
Moved the code for barclamp supported OS filter to the provisioner.