Update readme
Ensure program ended with an appropriate exit code
Move Usage() block to the begining of the code for readbility
Strip out error() for error message output
Refine readability
Initialize shell implementation
Shell function implemented: clear, list

- Move out print_out_group from look_up_group
Update shell implmentation

- Add help command
- Remove old preserved key: ask
Substract list operations to single functions

- list_add(): add an item to a list
- in_list(): check if an item is in the given list
Use `local' command to restrict variable scope
Add sets support: output functions

- host-setting can belong to different sets, and each set can only have
  one group setting ON simultaneously
Add comment header
Refine program entrance
Move all procedures into functions

- Setup main function for main routine calling
Support switch on for different set

- Will not automatically turn off other host-setting when turning on an
  uncategorized group now
Support to turn off a set's local host-setting
Update usage
Move out test_on function
Add function to get current set's setting
Move our set's validation function