Many enhancements

- add getValue() and getValues() methods
- add possibility to specify id to optgroup
- override clear() method