dvdplayer: Allow multithread decoding for hi10p content by default

This allows decoding of some hi10p material on e.g. AMD Fusion with
both cores at the max. This introduces a new advancedsetting named
disablehi10pmultithreading to disable hi10p decoded multithreaded.
changed: Add rule for selecting remote (or non-local) items for player selection rules
guilib: simplify BindToTexture and support any unit

All stages we support are in order after texture 0
gl: add missing alpha setup for texture stages
gl: avoid using explicit texture, use bound texture
opengl/d3d: add support for limited color levels (16-235)
intents: Add a java class for listening to intent broadcasts
intents: hook up a JNI_OnLoad for finding our java functions

This should be extended to do lots more, so that we can quickly add java code
and access it from native, without the mess that is jni.
droid: remove the stateful life-cycle manager

Simply properly react to messages instead. This ends up being much cleaner and
more straightforward.

There were many problems with the old life-cycle code:
- It based all decisions on gain/loss of focus, which is incorrect, as that
  pertains to input rather than windowing.
- Due to the above, there were many race conditions.
- The startup/teardown were convoluted
- It was a mix of examples, a stateful one where the app keeps track of status,
  and a stateless one mainly handle by appglue. Since we really only care about
  a handful of events (startup/exit/newwindow/destroywindow mainly), stateless
  is the way to go for us.

This fixes random black-screens, fixes, and crashes when starting XBMC as a
launcher.
[rbp] Handle resolution changes during video stream.

When the resolution changes, GPU sends a port settings changed message. Host has to acknowledge it by disabling and enabling the affected ports.
[IPlayer] Add struct SPlayerAudioStreamInfo and GetAudioStreamInfo(int iStream, SPlayerAudioStreamInfo &info).
[Players/GUI/LegacyPlayer/JSON] Remove
    GetAudioStreamLanguage(int iStream, CStdString &strLanguage)
    GetChannels()
    GetAudioCodecName()
    GetAudioStreamName(int iStream, CStdString &strStreamName)
from all players and replace them with GetAudioStreamInfo(int iStream, SPlayerAudioStreamInfo &info).
[IPlayer] Add struct SPlayerSubtitleStreamInfo and GetSubtitleStreamInfo(int iStream, SPlayerSubtitleStreamInfo &info).

[Players/GUI/LegacyPlayer/JSON] Remove
     GetSubtitleLanguage(int iStream, CStdString &strStreamLang)
     GetSubtitleName(int iStream, CStdString &strStreamName)
from all players and replace the calls to them with calls to GetSubtitleStreamInfo(int iStream, SPlayerSubtitleStreamInfo &info).
[Players] Remove unused method GetSubtitleExtension(CStdString &strSubtitleExtension).
[IPlayer] Add struct SPlayerVideoStreamInfo and GetAudioStreamInfo(SPlayerVideoStreamInfo &info).

[Players/GUI] Remove
    GetVideoBitrate()
    GetVideoCodecName()
    GetVideoAspectRatio(float& fAR)
    GetVideoRect(CRect& SrcRect, CRect& DestRect)

from all players and replace the calls to them with calls to GetVideoStreamInfo(int iStream, SPlayerAudioStreamInfo &info).
Fix the WaitData amount in CSimpleFileCache::Seek, count from read pos.
Correct Player.PlayPause behavior

In current implementation using play parameter as boolean won't force the playerspeed to 1 as it should.
This PR correct this so that using a bool parameter act as the toggle and provide the same behavior as GUI or EventServer.
[rbp] Fix for stuttery video when seeking before zero

There are a few issues with seeking I found.
We weren't correctly setting OMX_BUFFERFLAG_TIME_UNKNOWN on the first frame after a seek which could make the GPU think video was at 0 and audio at a much larger offset.
A full video fifo (to GPU) stops any higher priority messages from being received which can stall a seek and the flush message doesn't get through. Use m_flush to discard the video packet that doesn't fit.
We get an audio frame through with unknown pts/dts after the flush, but before the GENERAL_RESYNC when seeking. This was given to GPU and was perhaps 30 seconds out from the following packets and that throws off the timing between audio and video streams. Keeping m_flush true until the GENERAL_RESYNC discards this frame. Hopefully that is safe.
Fix crash in CShoutcastFile::Close(), clear buffer pointer after delete.
Fix ticket 12729, ignore content-length of shoutcast file.
When the shoutcast file was 302 redirected, libcurl may return the
content-length of the 302 page's body, it cause next read return 0.
Merge pull request #2301 from Tolriq/CorrectPlayPause

jsonrpc: correct Player.PlayPause behavior