CORE, RPC: added support for changing preferred email for users

- Added requestPreferredEmailChange() which stores change request
  and sends email notification with encrypted validation link.
- Added validatePreferredEmailChange() which takes encrypted parameters
  from email notification in order to perform change itself
  (set value to attribute).
- Delete all mail change requests if deleteUser() is called.

- Users can request mail change for themselves or their service identities.
- Mail validation is accepted only with proper set of parameters and only
  if logged user is autorized for target user.
- Validation URL is reconstructed from original http request
  (passed from RPC to method itself). If value is not valid URL
  then exception is thrown a no changes are made.

Following properties must be added to perun.properties file before accepting this change:

- perun.mailchange.secretKey (key used to encrypt change request id)
- perun.mailchange.backupFrom (address used as from in mail notification)

Following changes must be performed in DB before accepting this change:

create table "mailchange" (
	id integer not null,
	value text not null,
	user_id integer not null,
	created_at timestamp default now() not null,
	created_by varchar(1024) default user not null,
	created_by_uid integer
);
create sequence "mailchange_id_seq" maxvalue 9223372036854775807;
alter table mailchange add constraint mailchange_pk primary key (id);
alter table mailchange add constraint mailchange_u_fk foreign key (user_id) references users(id);
create index idx_fk_mailchange_user_id on users(id);
grant all on mailchange to perun;
CORE, RPC, GUI: very raw version of new user detail for internal testing

GUI:

- User can switch his identities by "select identity" option in menu.
  If have only one, option is disabled. Switching still can be done
  through service identities table and associated users table.
- User can update titles in name from GUI.
- Perun admin can update whole user's name from GUI.
- User can see his certificates with expiration date.
- User can change password or go to reset gui from Authentications tab.
- User can change preferred email, language and timezone.
- On service identity detail user can change its email or add new login
  (if supported namespace) and set password. Login can be added only if
  there wasn't any before (proper checks are in core method addLogin()).

- Perun GUI can be used to display mail change verification results.
- Added new callbacks, updated User object, removed unused classes.
- Better error message formatting (proper width) for "Extended" input widgets.
  Also can display HTML and not just the text.
- Updated params reading in application form gui to determine, if its
  mail validation request.

- Added test tab for JSON parser for further testing. Parsing simple
  values like string, integer works locally but not in production runtime.

CORE, RPC:

- Multiple small fixes of typos.
- Updated content of email notice, added mail subject.
GUI: updated checks for TextBox input for login

- ExtendedTextBox can now be set to processing and hard error state.
  Whench implementing TextBoxValidator it's method MUST return
  FALSE if TextBox is in processing or hard error state in order
  to stop any action depending on checked value.
- Use new TextBox states to handle external checks on input
  (like RPC call if login is available).
- Added regex for login attribute value used on users input in
  application form and addLogin/createServiceMember tabs.
  Now input form is consistent in design when checking it's values.
- Fixed event calls in IsLoginAvailable.
- Updated source formatting.
CORE: allow mail validation only in 6 hour window

- Allow to validate new email address only inside 6 hours window
  from moment of request creation.
- Constant (in hours) can be changed in the future.
GUI: incremental update to user detail page

- Updated design and behavior of ResourcesSettings tab
  (used to change shell etc.)
- Allow to exclude user from mailing lists.
- Updated SelfTabs location (breadcrumbs).
- Allow to set default when user changes shell on resource/facility
  (it is done by deleting value of user_facility:def:shell attribute).
- Display membership status and expiration date on SelfVos tab
  (perunadmin can change both from here).
- Updated select identity tab.
- Display notice if preferred mail change is pending (using local storage)
  and display notice, about need to validate new email when user
  types in textbox.
CORE, GUI: fixes for mail validation link

CORE:

- Mail validation link now respect original rpc authz
  /perun-rpc-krb/  ->  /perun-gui-krb/
  /perun-rpc-fed/  ->  /perun-gui-fed/
  /perun-rpc-cert/ ->  /perun-gui-cert/
  any other path   ->  /perun-gui/

- Mail validation time window is taken from perun.properties
  now with fallback in source code (6 hours).
  This will make any deployment specific changes easier than
  change source code every time.

- Following entry must be added to perun.properties before
  accepting changes in this commit:

  perun.mailchange.validationWindow = [value]

  where [value] is number representing hours.

GUI:

- Fixup bugs.
RPC, GUI: support for getNewExtendMembership()

- Added support for getting new membership expiration date
  for vo extension applications before approval/rejection.
- Clear pending mailchange in GUI's local storage if
  validation successful.
- Remove some unnecessary code, small design fixes
GUI: updated application detail

- Updated detail page of user's own applications in Perun GUI.
- Better date/time on application detail in ApplicationForm GUI.
- Better message when application doesn't contain any data.
CORE, RPC, GUI: updated mail validation process

CORE, RPC:

- Added method getPendingPreferredEmailChanges() which
  returns list of email addresses awaiting validation in
  order to display notice in GUI for users.
- Updated Javadoc

GUI:

- Proper implementation of check on pending preferred
  email change requests. User can see, what email addresses
  has change pending.
- Removed usage of LocalStorage for pending mail change.
- BasicOverlayType can now return list of Strings, Booleans
  and Integers from JSON response.
GUI: finished base redesign of user's self detail

- Fixed select identity tab when there is a lot of service identities.
- Finished quick links in user detail overview.
- Added custom widget for PreferredShells attribute
- Fixed saving values from global preferences
- Code cleanup
GUI: prevent calling open() on not-authorized tabs

- Do not call open() on tabs, which user is not authorized to view,
  since they update context (e.g. menu) and might display private
  data like other users names.
- Fixed privileges on own member status widget (display
  change option only is user is vo_admin of particular vo).
- Fixed IDS when updating member contact informations.
RPC, GUI: fixed updating user name titles

RPC:

- Fixed updateNameTitles() which called updateUser() instead.

GUI:

- Fixed sending user object from GUI when updating user titles.
- Removed @version
- Quick links on user detail are not italic now.
GUI: fixed implementation of editing entity details

- Use native object cloning before setting new parameters
  to entity. Passing original object to update callbacks
  caused local update even when finished in error state.

- When entity update is successfull, call also open() on tab,
  since name of entity can be show in menu and wouldn't be
  updated until next menu refresh.

- Fixed equals() and isPrepared() on edit entity tabs.
- Source format, removed unused code.
CABINET: support for created_by_uid for Publication, Authorship & Thanks

- Added support for created_by_uid column in DB. Property added
  also to Publication, Authorship and Thanks objects.
- Updated Auditparser and RPC.
- When creating object, store also created_by_uid and if present, use it
  to resolve privileges when deleting object.
GUI: support for created_by_uid in GUI

- Privileges above Publications now handles created_by_uid
- Small code changes.
GUI: slightly updated add publication wizard

- Updated texts on addPublication wizard page 1.
Add new methods for assigning and removing groups to/from resource

- add method removeGroupsFromResource
- add method assignGroupToResource
- add these method also to RPC
- methods are only cycles through existing methods removeGroupFromResource and assignGroupToResource in BlImpl
Merge pull request #150 from stavamichal/Add-methods-assigned/delete-groups-to/from-resource

Add new methods for assigning and removing groups to/from resource
Merge pull request #143 from zlamalp/user

CORE, RPC, GUI: redesigned user's self detail, support for mail change
Merge pull request #147 from zlamalp/pubs

CABINET: support for created_by_uid in publications