Speed improvement for opening the movies library

On all but the first time of opening the movies library, the CFileItemList
is built using CArchive. A large proportion of the time taken to do this is
actually spent in CVideoInfoTag::Archive() where it calls
CScraperUrl::Parse() and CFanart::Unpack(). Unless I've overlooked something,
these calls are unnecessary - the XML parsing they do is not performed the
first time the movies library is opened (when instead the virtual directory
videodb://movies/titles/ is enumerated using a database query). Also, the
Parse() method is called again when you do something like open the Movie
Information window, irrespective of whether it was called when the library
was opened.

Also note, it is unusual for any implementation of IArchivable::Archive() to
do anything other than read or write a data member from/to a CArchive, so
these calls to Parse() and Unpack() feel like an anomaly.

Additionally, inserted a call to std::vector::reserve() before reading the
cast list, because it was an obvious speed win.

Here are some benchmarks for the function CGUIMediaWindow::GetDirectory()
on a library of 600 movies, running on a Raspberry Pi:
* First call (before or after):    3.4 seconds
* Subsequent calls (before patch): 7.3 seconds
* Subsequent calls (after patch):  2.9 seconds
[cosmetic] rename non-member var
[Fix][StringUtils] Prevent infinite loop or crash.

Example:

  std::string rep = "1";
  StringUtils::Replace(rep,"",""); //infinite loop
  StringUtils::Replace(rep,"","1"); //crash std::bad_alloc
ffmpeg: add swr_set_compensation to interface
ActiveAE: use swr_set_compensation for changing resample ratio
[externalffmpeg/osx/ios] - fix compile after 429ce9bc69cdee21d3f3be23c1f7147f25b42db6
jsonrpc: fix Playlist.Add/Insert not working with "directory" (fixes #14578)
jsonrpc: cosmetics in JSON schema
Fix CURL::RemoveProtocolOption

Actually remove the option from m_protocolOptions and not m_options.
translate library:// folder paths on retrieval rather than when listing
Set the item path to the db path for filters
start directory may change after fetch, so update it to the items directory so that navigation out of the window via BACK works as expected
use the path in the items for testing paths after directory fetch
adds constructor to CGUIStaticItem that takes a CFileItem
refactors static content in containers into a list provider class
ensure we (re)select an item within the current range when updating listprovider content
adds SetVisibleCondition to CGUIStaticItem
adds <target> to directory nodes for specifying what type of content the node contains, or to which window it is most suited.
allow hidden library:// nodes to be listed using DIR_FLAG_GET_HIDDEN
adds a list provider for directory content. Specify via <content target="video">path/to/content</content>