[music] allow SortByYear to sort by year, album, track, then label
Fixed: Manual loading of VobSub subtitles

Currently VobSub (.idx/.sub) subtitles can not be loaded manually.

Allow loading VobSub subtitles manually by specifying either the .idx
or the .sub file. The other file is detected automatically. The
following naming schemes are supported:
- foobar.idx and foobar.sub
- foobar.idx and foobar.(rar|zip) containing foobar.sub

All of the above can be inside an archive (commonly .rar) as well, in
which case the user can select either .idx or .rar inside the archive.
Fixed: Subtitles autoloading with both VobSub and MicroDVD files

For example, this directory structure:
- movie.mp4
- movie.sub (MicroDVD subtitles)
- Subs/movie.rar (VobSub subtitles)
will prevent any subtitles from being actually loaded. DVDPlayer calls
IsVobSub() for any added .sub files to check if they should be ignored
(since VobSub files are supposed to be added via .idx during
autoloading, we do not want to add them a second time via .sub). In this
case IsVobSub() actually returns true even for the MicroDVD subtitles
since movie.rar contains movie.idx, which matches the name of the
MicroDVD subtitle file. Additionally, the movie.idx inside movie.rar
will actually be paired with the MicroDVD movie.sub instead of the
correct VobSub movie.sub, and will therefore fail to load.

To fix this, make the VobSub .idx/.sub pairing requirement more strict,
allowing a match only if they are in the same directory (or, as
previously allowed, .sub is rarred/zipped in an archive matching the
name of .idx).

Suggested by taxigps.
[configure] use central file to store xbmc version info
autogenerate xbmc version dependent files
update Xcode
[WIN32] added automatic versioning (batch file done by wsnipex)
and generate addons/xbmc.addon/addon.xml in CompileInfo.bat, thx Montellese
also generate SCMID on build time
[xmlutils] adds helper GetAttribute for retrieving a std::string version of an attribute
[xmlutils] use XMLUtils::GetAttribute() when assigning attributes directly to CStdString/std::string, as they may be NULL
[xml] fix potential null pointer dereference when reading attributes
[addons] make the 'type' attribute of addon settings consistently compared case-sensitive
[addons] read the id attribute into a std::string where comparison is made case-sensitive
[xml] use GetAttribute() where it makes the code clearer (and where used enough to warrant the include)
[xml] use TiXmlNode::Attribute(foo, int|double) method where it tidies things up
[xml] read attributes into const char* where they're re-used immediately
[skinsettings] setting type of skin settings needn't be compared case-insensitive (we write them, we read them)
[addons] have the 'subsetting' attribute and '' values attribute be case-sensitive to drop some strcmpi()
[settings] make the advancedsetting 'bydate' attribute for tvshow regexps case-sensitive (i.e. 'true')
[addons] drop duplicate if clause