Allow custom xkb keyboards to be displayed

Advanced users can define custom Xkb keyboard layouts for otherwise
unsupported languages/scripts.  Without this change, only the standard
system keyboards could be seen in our programs even though the system
could choose them through its standard setup software and input language
applets.
Fixes text truncation on language name in ConfigTool Input Systems tab

Bugfix for WS-51 where letters with descenders like "g" were cut off
in Linux.
Fix keyboard layout loading for custom keyboards
Merge pull request #55 from sillsdev/fixWS-51

Fixes text truncation on language name in ConfigTool Input Systems tab
More fixes for listing custom xkb keyboards on Linux
Merge pull request #53 from sillsdev/FixForCustomXkbKeyboards

Allow custom xkb keyboards to be displayed
Temp: Work-around crash in WeSay with GeckoFx 29

During a backup, a LogBox is created and the Text property is
accessed during ctor chain.  It seems like there has always been an
C# Null Pointer Exception here, but it now it causes a SIGSEGV in
xulrunner29.  This change will keep the C# Null Pointer Exception
from happening and allow WeSay to work while we figure out the
problem with xulrunner29.
Merge pull request #56 from sillsdev/WorkAroundCrashWithGeckoFx29

Temp: Work-around crash in WeSay with GeckoFx 29
Force a new writing system id when duplicating

Duplicating an existing writing system in the UI, then deleting the
duplicate would result in deleting the original writing system since
the duplicate has the same id with a simple Clone based duplication.
Merge pull request #57 from sillsdev/PreventDeletingByDuplicating

Force a new writing system id when duplicating
Replace exiftool with taglib#

Main reason is that the previous fix for non-ascii characters in
filenames, involving pumping the data into standardInput and reading
from standardOutput, was crashing for many (typically larger) images.

The new code is cleaner, shorter, doesn't require starting a new
process, backwards compatible, and more likely to be cross-platform.

As a bonus two previously disabled unit tests now pass, and it seems
to be picking up more pre-existing metadata.

One downside is that current releases of programs built using the old
exiftool version will not see changes made to the copyright owner field
made by the new version. Details are in the Metadata class comment.

Note that we are using (for now) a custom build of taglib#. It does not
depend on a 3rd party decompression library and copes with metadata
stored in the way the ArtOfReading uses (ImageMagick).
Fix improper formatting of <text><span> in LIFT files

This fixes http://jira.palaso.org/issues/browse/WS-34794.
Also ensure that the LIFT file is ordered consistently and that only
NFC Unicode is written out.  Both of these changes help with comparing
files without meaningless differences.
Merge pull request #54 from JohnThomson/feature/replaceExiftoolTagLib

Replace exiftool with taglib#
Merge pull request #58 from sillsdev/Fix-WS-34794

Fix improper formatting of <text><span> in LIFT files
Change to new SIL Logo in About Box
Fix tests that failed due to LiftSorter.SortLiftFile()

Seven tests needed either attributes reordered or guid attributes
added.  Two tests with illegal characters in the data had to be
recast as expecting exceptions.
Merge pull request #60 from sillsdev/FixTestsFailingDueToSortLiftFile

Fix tests that failed due to LiftSorter.SortLiftFile()
Do not replace http:// with file:// when creating stylesheet link.
Merge pull request #61 from sillsdev/Fix-Stylesheet-Urls

Do not replace http:// with file:// when creating stylesheet link.
Preserve <span> information in MultiText strings

This fixes http://jira.palaso.org/issues/browse/WS-34799, at least
to a first approximation.  No attempt is made to keep the spans in
sync with any editing of the field.  The user is not shown anything
to indicate that spans exist underneath to affect the formatting.