Rework the hosts assignment page

Update table design for Deployment Roles according to wireframes (page 26)
Prevent table of hosts to be always visible
Refine "assigning hosts" workflow (page 7-11)
Refine "unassigning hosts" workflow (page 12-16)
Allow user to see deployed hosts for each role (page 26, note #6)
Enable user to close hosts table
Merge pull request #160 from jtomasek/2hosts_assignment_rework

Rework the hosts assignment page
First prototype of params handling.
Add Hypervisor param
A few fixes to the updated wizard step 1:

- renamed "HA" attribute "LayoutName" -- right now the layouts are HA vs.
  non-HA, but it's possible that additional reference architectures will be
  generated that might add to the layout list, so I didn't want to design
  ourselves into a corner with a boolean HA/non-HA model. In addition, we need
  the selection value to match the Layout name, since that's how we query the
  layout to find it. Layout is unique on (name, networking), so those two values
  should be the ones that are set as the UI param values. Values now match
  what's shown in the UI (and in the updated seeds.rb) rather than true and false
- fixed typo Staypuft::Deployment::Networking::NOVA as 'nova' rather than 'nove'
- re-enabled update_hostgroup_list. We can't use lazy evaluation here like we
  do for params whose actions are only to set class params, since in response
  to the layout-related params, we have to actually create Hostgroups. This
  method is now triggered by the UI param selections, though.
- AMQP Provider is now a hidden UI param -- the backend still requires this
  setting, so the only reason it's out-of-scope in the UI is that Qpid is
  currently broken on the back end. With this setup, all we need to do to
  re-enable is to un-hide the form element.
- default values weren't being set properly for the new params; added a
  before_validation callback to set these
- moved some additional logic from the new action in the deployments_controller
  to this new callback
- some updates to the functional_dependencies seeds.rb bits:
  - Don't repeat the puppclass-level quickstack::pacemaker::params, put both
    entries under the same top level item
  - Added settings for amqp_server/amqp_provider
Set defaults in initialize
remove hidden field
Better definition of functional dependencies
Add platform UI
Update Operationsystem based on platform param

fix update_hostgroup_list and other updates to be called automatically
Adding first service parameter
Adding password handling (WIP)

This is a bit of a work in progress. Most things work, but the actual connection
between model and UI element isn't totally functional, mostly because I'm not
totally clear on how to convince the form/controller code to treat the ActiveModel
bits as real.

Bits I was trying and should either be fixed or gutted:
- steps_controller diff and related attributes= method (this is probably the
  wrong approach, but it's the last thing I tried
- any definition of [] methods in deployment can be removed, unless we actually
  need them and they can be modified to do the right thing
- hostgroup group_parameters doesn't cope well with empty values (hostgroup validation
  throws up validation error). This wasn't interacting well with the shared password
  since by default it's empty (we use random ones by default). The hackish workaround
  is to set it to the string "BLANK" but this should be resolved in a better way
- related to the above, I'm only conditionally setting the group_param value based
  on whether it's nil, but this didn't resolve the error -- it just pushed the error
  further down

Things that are done:
- Created PasswordService class to track password settings and all the random passwords
- Added password elements to the Wizard step 1 UI, although it's not currently connecting
  properly to the real data (i.e. defaults aren't populated properly from the obj, and
  form submission isn't submitting anything for the .passwords sub-object
- initializer sets defaults for passwords (including all the SecureRandom.hex values)
- fixed typo in nova_network validation
- nova subobjejct is now always created, instead of only conditionally based on network
  setting. I did this because its absence affected the initialize method, and also
  because the point at which the networking, etc. are chosen is *after* the db object
  is created, so any 'initialize' actions need to take into account possible future
  selections
- Added the dynamic values for passwords to seeds.rb
Fix the issues with password fields.
Use existing Foreman helpers
Fix a couple bugs with param processing for passwords

I'm not sure if the intent was for the passwords params to be
 nested under :staypuft_deployment or not, but with code as submitted
:passwords was a separate hash key, parallel to :staypuft_deployment,
so this change was needed for processing to work properly.

If the intent is for the response to have them nested, this can be
fixed to expect a nested hash again, once the underlying problem
is fixed.
Fix passwords params placement
Pre-fill password configuration

for #valid? to pass
minor improvements

- moving #attributes= to abstract class
- removing old unnecessary nil check
Split deployment.rb into more files
Do not fail on missing classes