Enable node attributes from discover data [1/2]

The baseline code was in place to do this for a while, this pull mainly 
makes it testable and then fixes the UI to correctly render the attribs.

Most of the attribs are simple json path resolution, there are a few that
are more tricky.

I have avoided the tricky ones except for 2 as proof points:
1) number of drives uses a subclass for the counting logic
2) switches has some logic to build the switch list

Added protections for missing information.

For now, this is primarily to support the UI but could be extended into the API if needed.


 BDD/bdd_restrat.erl                                |   16 +++--
 BDD/crowbar.erl                                    |    6 ++
 BDD/dev.erl                                        |    3 +
 BDD/features/attrib.feature                        |   18 ++++++
 BDD/features/node.feature                          |    9 ++-
 .../app/controllers/attribs_controller.rb          |   12 +---
 .../app/controllers/nodes_controller.rb            |   19 ++++++
 .../models/barclamp_crowbar/attrib_drive_count.rb  |   29 +++++++++
 crowbar_framework/app/models/node.rb               |   14 +++--
 .../app/views/attribs/index.html.haml              |   16 ++++-
 crowbar_framework/app/views/attribs/show.html.haml |   12 +++-
 crowbar_framework/app/views/nodes/_show.html.haml  |   16 +++--
 crowbar_framework/config/locales/crowbar/en.yml    |   19 +++---
 crowbar_framework/config/routes.rb                 |    3 +
 .../db/migrate/20131018_add_node_attibs.rb         |   64 ++++++++++++++++++++
 crowbar_framework/test/data/node_discovery.json    |   13 ++--
 16 files changed, 222 insertions(+), 47 deletions(-)

Crowbar-Pull-ID: ee99a890a1474d496e875d6d9a09f7959a992687

Crowbar-Release: development