refine parameter ui widgets

Define new ParameterUIWidget class to claim the widget's interfaces and provide
necessary general implementation for simplying the effort of writing new
widget.

This new class can clearly teach widget developers how to implement a new
widget, one of the important information is which methods must be overrided for
writing a widget.

Another changes are to PasswordUI and PeriodUI. In the new changes,
parameter_name are necessary and must be passed when initialize a new widget
instance instead of using default internal parameter name `password` and
`period` individually. The *reason* why to make this changes is parameter value
would be overwritten when PasswordUI or PeriodUI are used among backends.