PVR: Resolve channel dummy in GUIWindowPVRTimerSettings

When using Backend channel number , use channel unique ID member instead channel number
PVR: Cosmetics in GUIWindowPVRTimerSettings
File: declare and implement class auto_buffer
File: replace CAutoBuffer usage with auto_buffer, fixes memory allocation check
File: add 'LoadFile' function and copy code from FileUtils
CFile::LoadFile: replace ugly reference to pointer with auto_buffer
FileUtils::LoadFile: replace implementation with call of CFile::LoadFile
[vfs] CFile: fix: close underlining file implementation in destructor
CharsetDetection: add new header 'CharsetDetection.h' and implementation 'CharsetDetection.cpp' with function GetBomEncoding()
CharsetDetection: add XML charset detection functions
XBMCTinyXML::Parse: return 'bool' instead of 'const char*'
Return value is (rarely) used only as bool
XBMCTinyXML: move "&amp;" fixing to "InternalParse"
XBMCTinyXML: add member variable m_SuggestedCharset and functions overloads
XBMCTinyXML: detect XML charset and convert data if needed
XBMCTinyXML: add 'GetXxCharset' functions
Remove hacks and workarounds for XML encoding
XMLUtils: remove not needed anymore and semi broken 'HasUTF8Declaration' and 'GetEncoding'
* 'HasUTF8Declaration' can't really detect declaration with whitespaces and can false detect encoding beyond declaration end
* 'GetEncoding' works only if XML is stored in singlebyte encoding
[osx] add CharsetDetection.cpp/h to xcode project
[dvdplayer] potential unguarded null pointer when video has no audio (e.g. stills in dvd menu)
[PVR] Timeslot of EPG program

- In FixOverlappingEvents(), start time of EPG program from PVR client could be updated to fill the gap until
the previous program. It is a  problem for the PVR client when a new timer is created from EPG. Often the start
time of timeslot is use to identify the program. So here i update previous end time instead current start time
to fill the gap or close overlap. With these changes EPG program keep the same start time along the flow: from
the client, throw PVR and finally to the client when creating the timer.

- In GetTagAround() when previous program had no gap with current program (always true ? FixOverlappingEvents ?)
the previous was returned instead the current begins around. So here time should be strickly less.