Rename SMPreference class to GenericSMPreference and create interface SMPreference.
Change PreferenceView in SMUserPreferenceArray to support multiple values.
Drop using delegate model in SMDataModel to give more control of processing.

Could not subclass it because it is declared as final in Mahout.