MDL-45895 core: user preference API improvements

* User preferences can now be defined.
* Classic style user preferences are still supported.
* There is a new user preferences page in the user navigation.
MDL-45895 core: defined the usemodchooser preference
MDL-45895 core: defined homepage user preference
MDL-45895 core_user: defined editor user preference
MDL-45895 core_user: converted mailformat to emailformat preference
MDL-45895 core: allow get_component_string to handle subsystem requests
MDL-45895 core_blog: defined entriesperpage blog preference
MDL-45895 core_badges: defined showinprofile user preference
MDL-45895 core_calendar: defined calendar user preferences

AMOS BEGIN
  CPY [pref_lookahead,core_calendar],[userpref_lookahead,core_calendar]
  CPY [pref_lookahead_help,core_calendar],[userpref_lookahead_help,core_calendar]
  CPY [pref_maxevents,core_calendar],[userpref_maxevents,core_calendar]
  CPY [pref_maxevents_help,core_calendar],[userpref_maxevents_help,core_calendar]
  CPY [pref_persistflt,core_calendar],[userpref_persistflt,core_calendar]
  CPY [pref_persistflt_help,core_calendar],[userpref_persistflt_help,core_calendar]
  CPY [pref_startwday,core_calendar],[userpref_startwday,core_calendar]
  CPY [pref_startwday,core_calendar],[userpref_startwday_help,core_calendar]
  CPY [pref_timeformat,core_calendar],[userpref_timeformat,core_calendar]
  CPY [pref_timeformat_help,core_calendar],[userpref_timeformat_help,core_calendar]
AMOS END
MDL-45895 block_course_overview: defined coursestodisplay preference
MDL-45895 gradingform_guide: defined showmarkerdesc and showstudentdesc user preferences

AMOS BEGIN
  CPY [showmarkerdesc,gradingform_guide],[userpref_showmarkerdesc,gradingform_guide]
  CPY [showstudentdesc,gradingform_guide],[userpref_showstudentdesc,gradingform_guide]
AMOS END
MDL-45895 mod_forum: defined the display mode user preference
MDL-45895 mod_workshop: defined perpage user preference