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.
Fix destroy_active again to not use role name as instance name

The original fix was in c4acddcb, but it got broken by f7f9c1a4.
Fix naming of bond interfaces

Don't try to be smart about guessing the interface names of the bonding
interfaces. Just use the attribute that is set by the network cookbook.

This depends on: https://github.com/crowbar/barclamp-network/pull/203

https://bugzilla.novell.com/show_bug.cgi?id=833133
Don't capitalize barclamp descriptions

"OpenStack Dashboard: The thing" should not become "Openstack dashboard:
the thing". Otherwise all "Display" fixes won't make a difference :-)
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
Merge pull request #645 from MirantisDellCrowbar/BUG/DCB-159/release/pebbles/master

Bug/dcb 159/release/pebbles/master
add file for 1.x build so we can diverge the 2.x build docs
Merge pull request #656 from ravolt/pull-req-release-pebbles-master-98ecaae1785d62fbc111f06e236e3225b2464ab9

Add doc file so that we can split the CB 1x from CB 2x dev build info [1/1]
Merge pull request #651 from saschpe/release/pebbles/master-capitalize

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

Merged by devtool for cloudsleuth
Merge pull request #650 from rhafer/fix/bond-naming

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

Merged by devtool for cloudsleuth
Merge pull request #12 from crowbar/release/pebbles/master

pull changes from dell