Adds transcoding of multichannel audio to AC3 for the CoreAudioEngine.

Changes CoreAudioAE::MakeStream to detect if transcoding is possible and needed. The
transcoding state is passed to OpenCoreAudio where is plays a part in
the setup of the object. Mostly, transcode behaves like passthrough
here.

The actual transcoding happens in CoreAudioAEStream, were an
AEEncoderFFmpeg is instantiated and used if transcosing is called for.

The trickiest bit is the addition of a buffer for incoming audio that
needs to be encoded. The encoder needs to work in specific block sizes,
and the incoming stream is not always handed to us in appropriate chunks
so we need to buffer it up so we can process it. This required a little
fiddling with the delays to make sure sync was kept tight.
[rendercapture] Fix passthrough rendercapture interface

The RenderCapture function doesn't behave correctly for passthough video renderers,
and in fact segfaults on Pi when setting a bookmark.

There is no need to do a glReadPixels to get a video snapshot in the passthrough case,
so provide a shortcut.
[rbp] Support grabbing just the video layer through rendercapture

As the bookmark snapshot doesn't want the OSD (and neither does boblight)
allow video, or video + GUI to be selectable.

While we're there, making the GPU do the red/blue swap and stride packing saves some cpu.

Requires updated firmware
[rbp/omxplayer] Avoid too many calls to GPU

We currently read the media time once per packet received from demuxer to determine gpu underrun.
We've found that TrueHD audio in particular produces ~1000 packets per second (whether it is the active track or not).
The cost of reading media time (from gpu) is high enough that 1000 calls per second makes us fail to keep up.
So, cache the media time, and only read it at most 50 times per second.
[rbp/omxplayer] Avoid audio codec when in passthrough modes

There is no need to open the ffmpeg audio codec when in passthrough mode.
Also there is no need to close/open the OMXAudio component when parameters (like number of channels) change in passthough.
This avoids an unpleasant stutter
[3d] fixed wrong size of ass subtitles under sbs/tab 3d mode.
[addons] add Gotham repositoy
fixed: scraper fallback logic

code ended up selecting the default album scraper for artists
ActiveAESink: Fix GenarateNoise()
[LangCodeExpander] Add method CompareLangCodes(const CStdString& code1, const CStdString& code2).
Its purpose is to determine if two languages given as ISO 639-1, ISO 639-2/T, or ISO 639-2/B codes represent the same language.
[LangCodeExpander] Add method CompareFullLangNames(const CStdString& lang1, const CStdString& lang2).
Its purpose is to determine if two english language names represent the same language.
For example "Abkhaz" and "Abkhazian" represent the same language.
[DVD/OMXPlayer] Fix auto-selection of audio and subtitle streams by using a generic language compare method.
XBMC's audio and subtitle language is stored as an ISO 639-2 T code, but a video's metadata could also store it as an ISO 639-2 B code which could differ from the T variant.
add new language string for sort title
[osx] - fix warning about deprecated conversion between char * and string constant
[airplay] - fix possible deadlock when stopping picture airplay - thx @ulion
Merge pull request #3074 from ecopoesis/coreaudio-transcode-ac3

transcoding to AC3 for CoreAudio
ActiveAE: fix toggling stereo upmix for spdif
ActiveAE: fix channel layout for audiophile mode
Merge pull request #3207 from fritsch/active-ae-slidely-louder

ActiveAE: Fix double to float conversion in Noise Function
Merge pull request #3211 from popcornmix/gpu_calls

[rbp/omxplayer] Avoid too many calls to GPU