Merge remote-tracking branch 'singu/master'
Merge remote-tracking branch 'singu/master'
Make global strerr() functions in llfile.cpp static member functions of LLFile.

This is the cleanest way to make them available to the rest of the
viewer as exported functions.

This change is needed for / use by AIMultiGrid.
Feature Request: If EditLinkedParts is on, Copy Key should copy keys of any selected prim(s)
At the request of LL, append more info to channel string sent to the login server
Send versio number bare, without channel name, as V3 does
French menu gets Motion Resets Camera courtesy of Nomade (more translation on the way)
panel_tools_texture.xml splits off from floater_tools.xml (No real changes here, but this change will make life so nice for me)
In preparation to release, change defalt for crash reporting to 'Ask'
Cache the lookup of the sim access level.

Being part of the state line, it is called every frame, causing a
translation lookup every frame.
Make #includes in llcommon header files more complete.

These includes are needed. The current code includes them
in .cpp files *before* including these include files, but
that is not very clean, and not useful.

Actually including what a header file needs makes it more
clear what it drags in, it doesn't drag in more then before.
It also allows to include these headers without having to
includes needed for the included header file in a specific
order, in every .cpp file.
Minor LLMD5 extension and cleanup.

* Add LLMD5::clone(unsigned char const*), the inverse of LLMD5::raw_digest.
* Add LLMD5::clone(std::string const&), the inverse of LLMD5::hex_digest.
* Add LLMD5::isFinalized(), returns true if the object is finalized.
* Turn all binary operators into inline friends in the class.
* Fix operator<< to take a LLMD5 const& instead of a LLMD5&.

These changes are needed for / used by AIMultiGrid.
Removed LLXMLNode::writeHeaderToFile

Isn't used. This header is written else where already,
and will be written from now on (also) by AIXML*, which
will be committed next.
Add THROW_[MF]ALERT[EC] (AIArgs, AIAlert, AIAlertCode, AIAlertPrefix, AIAlertLine)

A system to throw errors that allow for easy error reporting to the user
by showing a translated pop-up alert box with the error message.

The messages use strings.xml for translation and allow the usual
replacement args (ie [FILE] is replaced with a filename).

The exceptions can be cascaded, by adding more (translated) text
when caught and then re-throwing the result.

Macros are being used to support adding a function name prefix
to a message of the current function that the exception is thrown
from.

The syntax is:

  <macro>(<line>);		to show 'line'
  <macro>(<alert>, <line>);	to append 'line' to a caught alert.
  <macro>(<line>, <alert>);	to prepend 'line' to a caught alert.

  where <macro> is one of:
  THROW_ALERT, THROW_MALERT, THROW_FALERT, THROW_FMALERT,
  THROW_ALERTE, THROW_MALERTE, THROW_FALERTE, THROW_FMALERTE, where
  M = modal, F = Function name.
  and where <line> is one of:

  <xmldesc>
  <xmldesc>, AIArgs<args>

  where <xmldesc> is a string literal that will be looked up
  in strings.xml, and <args> is:

  (<key>, <replacement>)[<args>]

  There are more variations of the macros to throw an arbitrary
  class (append _CLASS), include an int code (append C) or
  to store the current errno as code (append E).

  For example, THROW_MALERTC(code, ...), or THROW_FALERT_CLASS(Foobar, ...),
  where the ... is the same as for the macros above.

Documentation and example usage has been added to aialert.h.
Add AIFile - LLFile but throws AIAlertCode exceptions on error.

The code is the current errno.
Fix xml parser.

This fixes quoted strings, like <tag>"Hello \"World\""</tag>,
which otherwise might not be processed correctly because
the XML_CharacterDataHandler isn't guaranteed to be called
exactly once per element. It certainly isn't when a string
contains entities, ie: <tag>"&apos;Hello \"World\"&apos;"</tag>
certainly fails to be unescaped with the old code.
Moreover, the old unescape code things that a singly quote
is actually a quoted string (not noting that begin and end
quote are the same) and destructs all &quot; entities; also
fixed with this commit.
Add AIXMLRootElement, AIXMLElement, AIXMLParser and AIXMLElementParser

The AIXML* classes provide an Object Oriented way to serialize objects
to and from an XML file. Documentation is added at the top of aixml.cpp

These classes will be used by AIMultiGrid.
Add AIXMLLindenGenepool - redo of archetype export/import using AIXML*.

In order to remove code duplication, and as prove of concept,
I redid the linden_genepool archetype export and import (from the Edit
Appearance Floater), using AIXML and AIAlert.

The import/export code did shrink significantly, and became a lot
simpler. Although a new file pair (aixmllindengenepool.{cpp,h}) is
added to define the (de)serialization of the linden_genepool XML format,
that code is now centralized in one place, and still a lot simpler.

As a bonus however, every possible error is now semi-automatically
reported to the user with all details that might help to overcome
the problem, like file names and system errors.
Bug fix for 54b43f1ad7c7649ebba9e10767cf1e597c539a9e

Initialize mLastSimAccess.
Allow v3 xui style strings for anything panel derived.  <panel.string/>
Allow v3 xui alternative naming of combo_item as combo_box.item