refactor cfg as object

- now default type is 'nil', which is collapsed to flat config via
  Outputs#to_cfg

- if type is not 'nil' then name is automatically set if not set by
  model

- if name and type is set, separate file is created

- if name is not set, but type is set, outputs from type are collapsed
  as with 'nil' types

This model:
  cmd 'show ip cef' do |out|
    out.type = 'poop'
    out.name = false
    out
  end

  cmd 'show process cpu' do |out|
    out.type = 'poop'
    out.name = 'my_cpu'
    out
  end

  cmd 'show memory statistics' do |out|
    out.type = 'poop'
    out.name = false
    out
  end

  cmd 'show ip bgp summary' do |out|
    out.type = 'poop'
  end

Would produce git output:
[ytti@ytti.fi ~/.config/oxidized]% ls poop
bu.ip.fi  bu.ip.fi--cpu  bu.ip.fi--show_ip_bgp_summary
[ytti@ytti.fi ~/.config/oxidized]%

bu.ip.fi contains the collapsed stuff
bu.ip.fi--cpu is manually named
bu.ip.fi--show_ip_bgp_summary is automatically named