detect: Adding hpa's slot reporting

When detecting hpa controllers, let's report what we know about it.

This does include the firmware version, the serial numbers, the cache configuration, etc..

A typical output looks like:
[('hpa', 'slots', 'count', 1),
 ('hpa', 'slot_0', 'wait_for_cache_room', 'Disabled'),
 ('hpa', 'slot_0', 'bus_interface', 'PCI'),
 ('hpa', 'slot_0', 'surface_analysis_inconsistency_notification', 'Disabled'),
 ('hpa', 'slot_0', 'degraded_performance_optimization', 'Disabled'),
 ('hpa', 'slot_0', 'firmware_version', '5.70'),
 ('hpa', 'slot_0', 'battery/capacitor_count', '1'),
 ('hpa', 'slot_0', 'raid_6_(adg)_status', 'Disabled'),
 ('hpa', 'slot_0', 'hardware_revision', 'C'),
 ('hpa', 'slot_0', 'serial_number', '50014380224FD480'),
 ('hpa', 'slot_0', 'battery/capacitor_status', 'OK'),
 ('hpa', 'slot_0', 'queue_depth', 'Automatic'),
 ('hpa', 'slot_0', 'total_cache_memory_available', '912 MB'),
 ('hpa', 'slot_0', 'cache_backup_power_source', 'Capacitors'),
 ('hpa', 'slot_0', 'inconsistency_repair_policy', 'Disabled'),
 ('hpa', 'slot_0', 'rebuild_priority', 'Medium'),
 ('hpa', 'slot_0', 'surface_scan_delay', '15 secs'),
 ('hpa', 'slot_0', 'monitor_and_performance_delay', '60 min'),
 ('hpa', 'slot_0', 'controller_status', 'OK'),
 ('hpa', 'slot_0', 'post_prompt_timeout', '0 secs'),
 ('hpa', 'slot_0', 'cache_serial_number', 'PBCDF0CRH2Q1DK'),
 ('hpa', 'slot_0', 'expand_priority', 'Medium'),
 ('hpa', 'slot_0', 'cache_status', 'OK'),
 ('hpa', 'slot_0', 'cache_board_present', 'True'),
 ('hpa', 'slot_0', 'sata_ncq_supported', 'True'),
 ('hpa', 'slot_0', 'no-battery_write_cache', 'Disabled'),
 ('hpa', 'slot_0', 'drive_write_cache', 'Disabled'),
 ('hpa', 'slot_0', 'cache_ratio', '25% Read / 75% Write'),
 ('hpa', 'slot_0', 'elevator_sort', 'Enabled'),
 ('hpa', 'slot_0', 'total_cache_size', '1024 MB'),
 ('hpa', 'slot_0', 'surface_scan_mode', 'Idle'),