refine a few InvalidArgException translation cases

This change fixes the error message displayed to the user after an
InvalidArgException exception (hard) is converted into an
InvalidRequestArgException one (soft).

InvalidArgException::__construct(): keep copies of arguments
InvalidArgException::getName(): new read accessor
InvalidArgException::getValue(): idem
InvalidArgException::getReason(): idem
convertToIRAE(): new function to convert between two classes
assertIPArg(): update to use above
assertIPv4Arg(): idem
assertIPv6Arg(): idem
fix date/time attributes input processing (#719)

Date/time attributes processing was inconsistent in that output of such
attributes was done using date() function and a configurable format
string, but input was done using strtotime() and no format string. For
some format strings this lead to parts (year/month/day) of the date
swapped around on each form submit or the update declined.

This change addresses the problem through switching to strftime() for
output and strptime() for input. This implies a different format string
syntax, but both functions are available in early releases of PHP5, as
opposed to DateTime::createFromFormat(), which uses the same format as
date() but requires PHP 5.3.

* datetimestrFromTimestamp(): new helper function
* renderEditObjectForm(): update to use above
* formatAttributeValue(): idem
* renderExpirations(): idem

* timestampFromDatetimestr(): new helper function
* assertDateArg(): rewrite using above
* updateObjectAttributes(): update to use above

* upgrade.php: overwrite DATETIME_FORMAT value
* install.php: update DATETIME_FORMAT default value
* resetUIConfig(): idem
renderEditRackForm(): hide the delete icon if any atoms are used
remove the 'W' option from the RackSpace.state column
prevent deletion of system-level attributes (#761)
hide controls in cacti tab if user doesn't have permission (#707)
add SNMP support for D-Link DES-3052 (#765)