[vfs] CFile: remove 'virtual' from destructor
no class is derived from CFile
[3d] added 3D subtitle depth
[pvr] Fix missing recordings

This fixes an issue with missing recordings that occurs under following
circumstances:

- Recording A in subdirectory "TV Show XY"
- Recording B in subdirectory "TV show xy"

Because of the difference in case, recording B won't show up in any
sub folder. This can happen due to EPG inconsistencies.

The presented sub folders are created with case-insensitive matching
using CFileItemList::Contains in GetSubDirectories.
But when determining if a recording belongs into a directory, the
comparison is case-sensitive (in IsDirectoryMember).

This commit changes the IsDirecroryMember check to be case-insensitive.
vdpau: move cropping of top and bottom lines to renderer
StringUtils: add "isasciidigit", "isasciixdigit", "asciidigitvalue", "asciixdigitvalue", "isasciiuppercaseletter", "isasciilowercaseletter" and "isasciialphanum" for locale-independent ASCII operations
RegExp: add automatic UTF-8 mode based on given regular expression
Usage of RegExp: change from forced UTF-8 mode to new automatic UTF-8 mode
XBMCTinyXML: use new RegExp constructor
ScraperParser: add new attribute "utf8" for scraper RegExp, works similar attribute "cs", possible values "yes", "no", "auto" ("auto" by default)
LinuxRendererGL: make sure we have a shader defined
HttpHeader: fix: parse header properly according to RFC 2616
* use 'tab' as whitespace as well as 'space'
* process header lines divided to several lines with whitespace
HttpHeader::GetMimeType: fix: trim whitespace chars according to RFC2616
HttpHeader::GetCharset: fix: properly find charset according to RFC 2616
* detect more than one whitespace
* use 'tab' as whitespace
* allow charset to be quoted
Change the string comparison in CGUITextLayout::UpdateW to be case-sensitive

It seems likely that it was only case-insensitive due to the the default
seting of CStdStr::Equals. It's unlikely that you'd ever want to update a
string with another which is the same except for the case of one or more
characters, but if you did, I doubt you'd want to use the cached version if
so. And you're slowing down the comparison in all other cases to achieve that
dubious behaviour.
Add caching of text labels at the UTF8 level

Previously, CGUITextLayout::Update converted its string argument from UTF8 to
UTF16, then passed it to CGUITextLayout::UpdateW, where it was compared
against a cached copy of the string (in its UTF16 form). However, the
conversion itself was taking up a reasonable chunk of CPU time.

This patch adds a similar cache of the string in its UTF8 form to the Update
method, and splits the non-cache part of UpdateW into a separate function, so
we can bypass it the case where we've tested it against the UTF8 cache.

I have measured the effect while the Videos window of the default skin was
open (but idle) on a Raspberry Pi, and this reduced the CPU usage by 2.9%
from 39.1% to 36.2%:

          Before          After
          Mean   StdDev   Mean   StdDev  Confidence  Change
IdleCPU%  39.1   0.9      36.2   0.5     100.0%      +8.1%
Merge pull request #3709 from bavison/cache_utf8_text

Add caching of text labels at the UTF8 level
Merge pull request #3562 from Karlson2k/vfs_update_small_02

[vfs] CFile: remove 'virtual' from destructor
Merge pull request #3615 from FernetMenta/vdpau

vdpau: move cropping of top and bottom lines to renderer
Merge pull request #3574 from afedchin/3d_subs_depth

[3D] add 3D subtitle depth setting
Merge pull request #3650 from Karlson2k/fix_pcre_utf8

Fix PCRE UTF-8 error (mostly for scrapers)